Como obter todos os arquivos de um diretório

Jinku Hu 30 janeiro 2023
  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
Como obter todos os arquivos de um diretório

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.

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

Artigo relacionado - Python Dictionary