Como obter todos os arquivos de um diretório

  1. os.listdir para obter todos os arquivos em um diretório em Python
  2. os.walk para obter todos os arquivos de um diretório em Python
  3. glob.glob para obter todos os arquivos em um diretório em Python

Você poderia ter pelo menos 3 métodos para listar todos os arquivos de um diretório em Python, utilizando as funções Python os.listdir, os.walk e glob.glob.

Abaixo está a presunção deste tutorial,

  1. Versão Python - Python 3
  2. O nome do caminho é dirPath e existe no sistema, portanto, não será necessário verificar a existência do diretório.

os.listdir para obter todos os arquivos em um diretório em Python

O os.listdir lista todos os arquivos e pastas do diretório, portanto precisa de código extra para filtrar os arquivos do resultado.

import os
dirPath = r"C:\git\DelftStack\content"
result = [f for f in os.listdir(dirPath) if os.path.isfile(os.path.join(dirPath, f))]
print(result)

O os.listdir retorna apenas o caminho relativo dos arquivos ou pastas com referência ao dirPath, e a função os.path.isfile precisa do caminho completo para verificar se é ou não um arquivo, portanto precisamos utilizar o os.path.join para combinar o dirPath e os resultados do os.listdir para obter o caminho completo dos arquivos ou caminhos.

os.walk para obter todos os arquivos de um diretório em Python

os.walk generates the file names in the given directory by traversing the tree top-down (per default) or bottom-up. It yields a 3-tuple (dirpath, dirname, filenames) each time it walks to the directory in the tree (including top itself).

Todos os arquivos estão incluídos no tuple para o primeiro rendimento do os.walk, portanto um modo pítonico é

import os
dirPath = r"C:\git\DelftStack\content"
result = next(os.walk(dirPath))[2]
print(result)

glob.glob para obter todos os arquivos em um diretório em Python

O módulo glob encontra todos os caminhos que correspondem ao padrão específico dado de acordo com as regras utilizadas na shell do Unix. O glob.glob retorna a lista de nomes de caminhos que combinam com o padrão de nomes de caminhos dado. O caminho do arquivo tem o padrão de *.*, que é o que será passado para glob.glob como argumento de entrada.

import glob
dirPathPattern = r"C:\git\DelftStack\content\*.*"
result = glog.glob(dirPathPattern)
print(result)

O glob.glob retorna o caminho completo dos arquivos combinados, como o C:\git\DelftStack\conten\about.rst.

Aviso

O resultado do método glob.glob como mostrado aqui não poderia garantir que eles sejam apenas arquivos porque ele apenas verifica se o nome do caminho corresponde ao padrão, mas não verifica se é um arquivo ou um diretório.

Por exemplo, se um diretório tem o padrão de nome como test.test, então este diretório também é incluído no resultado.

Se você precisa garantir que a saída contenha apenas arquivos, você precisa verificá-lo com a função os.path.isfile.

Artigo relacionado - Python File

  • Importar um arquivo em Python
  • Abra um arquivo Zip sem extraí-lo em Python
  • Artigo relacionado - Python Dictionary

  • Grave bytes em um arquivo em Python
  • Abra um arquivo Zip sem extraí-lo em Python