Como encontrar ficheiros com uma certa extensão apenas em Python

Jinku Hu 30 janeiro 2023
  1. Método glob.glob para encontrar arquivos com uma certa extensão
  2. os.listdir() método para encontrar arquivos com uma certa extensão
  3. Método pathlib.glob para encontrar arquivos com certas extensões
  4. Encontre arquivos com uma certa extensão no diretório e seus subdiretórios em Python
  5. Os arquivos de busca do módulo pathlib recursivamente
Como encontrar ficheiros com uma certa extensão apenas em Python

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')]
Autor: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

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

Artigo relacionado - Python File