Como encontrar ficheiros com uma certa extensão apenas em Python
-
Método
glob.glob
para encontrar arquivos com uma certa extensão -
os.listdir()
método para encontrar arquivos com uma certa extensão -
Método
pathlib.glob
para encontrar arquivos com certas extensões - Encontre arquivos com uma certa extensão no diretório e seus subdiretórios em Python
-
Os arquivos de busca do módulo
pathlib
recursivamente
Este artigo introduz diferentes métodos para encontrar ficheiros com uma certa extensão apenas em Python.
Método glob.glob
para encontrar arquivos com uma certa extensão
Poderíamos utilizar o módulo glob.glob
para encontrar os arquivos com uma certa extensão apenas em Python.
import glob
targetPattern = r"C:\Test\*.txt"
glob.glob(targetPattern)
Os códigos acima demonstram como encontrar os arquivos com a extensão txt
no diretório C:\Test
.
os.listdir()
método para encontrar arquivos com uma certa extensão
A função os.listdir()
lista todos os arquivos no diretório dado, sem a informação do caminho do arquivo. Você poderia extrair os arquivos com a extensão específica utilizando a função str.endswith()
.
>>> import os
>>> fileDir = r"C:\Test"
>>> fileExt = r".txt"
>>> [_ for _ in os.listdir(fileDir) if _.endswith(fileExt)]
['test.txt', 'test1.txt']
Você precisa construir o caminho completo com a função os.path.join()
.
>>> import os
>>> fileDir = r"C:\Test"
>>> fileExt = r".txt"
>>> [os.path.join(fileDir, _) for _ in os.listdir(fileDir) if _.endswith(fileExt)]
['C:\\Test\\test.txt', 'C:\\Test\\test1.txt']
Método pathlib.glob
para encontrar arquivos com certas extensões
módulo pathlib
é introduzido no Python 3.4 que oferece caminhos de sistema de arquivos orientados a objetos. Ele fornece dois estilos: Caminhos do Windows no sistema operacional Windows e caminhos POSIX em sistemas Unix-alike.
>>> import pathlib
>>> fileDir = r"C:\Test"
>>> fileExt = r"*.txt"
>>> list(pathlib.Path(fileDir).glob(fileExt))
[WindowsPath('C:/Test/test.txt'), WindowsPath('C:/Test/test1.txt')]
O resultado é representado com WindowsPath
, e você poderia converter o resultado para a representação em string adicionando str()
, como
>>> [str(_) for _ in pathlib.Path(fileDir).glob(fileExt)]
['C:\\Test\\test.txt', 'C:\\Test\\test.txt']
Encontre arquivos com uma certa extensão no diretório e seus subdiretórios em Python
O padrão C:\Test\*.txt
apenas pesquisa os arquivos txt
no diretório C:\Test
, mas não em seus subdiretórios. Se você também quiser obter os arquivos txt
nos subdiretórios, você pode modificar um pouco o padrão.
import glob
targetPattern = r"C:\Test\**\*.txt"
glob.glob(targetPattern)
Os curingas **
entre Test
e \*.txt
significa que ele deve encontrar os arquivos txt
tanto no diretório quanto em seus subdiretórios.
Os arquivos de busca do módulo pathlib
recursivamente
Similar a adicionar **
em glob.glob
para procurar arquivos recursivamente, você também pode adicionar **
no método pathlib.Path.glob
para encontrar os arquivos com uma certa extensão recursivamente.
>>> import pathlib
>>> fileDir = r"C:\Test"
>>> fileExt = r"**\*.txt"
>>> list(pathlib.Path(fileDir).glob(fileExt))
[WindowsPath('C:/Test/test.txt'), WindowsPath('C:/Test/test1.txt'), WindowsPath('C:/Test/sub/test1.txt')]
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook