Python Get All Files in a Directory: The Complete & Efficient Guide
Updated on
Listar arquivos em um diretório é uma das tarefas mais comuns em Python — seja para organizar dados, pré-processar arquivos ou automatizar fluxos de trabalho.
Neste guia atualizado, você vai aprender:
- Como listar arquivos usando
os.listdir - Como listar arquivos recursivamente com
os.walk - Como filtrar arquivos por extensão
- Como listar imagens, vídeos ou tipos específicos de arquivos
- A forma moderna: fazer tudo isso com pathlib, a abordagem recomendada hoje
- Como usar padrões
globde forma eficaz
TL;DR — Receitas Rápidas
| Tarefa | Melhor Método |
|---|---|
| Listar arquivos (não recursivo) | os.listdir ou pathlib.Path.iterdir() |
| Listar arquivos recursivamente | os.walk ou pathlib.Path.rglob() |
| Filtrar por extensão | pathlib.Path.rglob("*.csv") |
| Casamento de padrões | glob.glob() / pathlib.Path.rglob("*pattern*") |
| Melhor no geral | pathlib |
1. Usando os.listdir (Básico, Não Recursivo)
A função os.listdir retorna nomes de arquivos e pastas dentro de um diretório — mas não entra em subpastas.
import os
def list_files(directory):
return os.listdir(directory)
print(list_files("/path/to/your/directory"))Isso retorna todas as entradas no diretório, mas você não conseguirá filtrar ou percorrer recursivamente sem lógica extra. Para a maior parte do código Python moderno, considere pathlib (próximas seções), mas isso ainda é útil para scripts rápidos.
2. Listando Todos os Arquivos Recursivamente com os.walk
Para percorrer todas as subpastas e listar todos os arquivos:
import os
def list_files_recursively(directory):
for root, dirs, files in os.walk(directory):
for file in files:
print(os.path.join(root, file))
list_files_recursively("/path/to/your/directory"))os.walk é poderoso e eficiente em memória, sendo ótimo para árvores de diretórios grandes.
3. Filtrando Arquivos por Extensão
Você pode filtrar durante o percurso:
import os
def list_files_by_extension(directory, extension):
for root, dirs, files in os.walk(directory):
for file in files:
if file.endswith(extension):
print(os.path.join(root, file))
list_files_by_extension("/path/to/your/directory", ".json")Use (".jpg", ".png") para múltiplas extensões.
4. Listando Arquivos de Imagem ou Vídeo
Listar imagens:
import os
def list_image_files(directory):
image_ext = (".jpg", ".jpeg", ".png", ".gif", ".webp")
for root, dirs, files in os.walk(directory):
for file in files:
if file.lower().endswith(image_ext):
print(os.path.join(root, file))
list_image_files("/path/to/your/directory")Listar vídeos:
import os
def list_video_files(directory):
video_ext = (".mp4", ".avi", ".mov", ".mkv")
for root, dirs, files in os.walk(directory):
for file in files:
if file.lower().endswith(video_ext):
print(os.path.join(root, file))
list_video_files("/path/to/your/directory")⭐ NOVO: A Maneira Moderna — Usando pathlib (Recomendado)
Desde o Python 3.4+, pathlib é a forma preferida de trabalhar com caminhos.
É mais legível e poderoso do que os.path.
Listar todos os arquivos (não recursivo):
from pathlib import Path
def list_files(directory):
return [p for p in Path(directory).iterdir() if p.is_file()]
print(list_files("/path/to/dir"))Listar todos os arquivos recursivamente:
from pathlib import Path
def list_files_recursive(directory):
return list(Path(directory).rglob("*"))
print(list_files_recursive("/path/to/dir"))Filtrar por extensão:
from pathlib import Path
for file in Path("/path/to/dir").rglob("*.json"):
print(file)Filtrar múltiplos tipos:
from pathlib import Path
extensions = ("*.jpg", "*.png", "*.jpeg")
for ext in extensions:
for file in Path("path/to/dir").rglob(ext):
print(file)Pathlib torna isso extremamente simples e limpo.
5. Casamento de Padrões com glob
glob é perfeito quando você precisa de correspondência de padrões ao estilo do shell:
import glob
json_files = glob.glob("/path/to/your/directory/**/*.json", recursive=True)
print(json_files)Padrões úteis:
"*.csv""data_*""**/*.jpg"(recursivo)
Conclusão
Neste guia, você aprendeu várias formas de listar arquivos em Python:
os.listdirpara varreduras simples de diretórioos.walkpara travessia recursiva- Filtragem de arquivos por extensão
- Manipulação de tipos especiais de arquivos como imagens e vídeos
globpara busca com curingas- pathlib — a abordagem moderna e recomendada
Seja limpando dados, construindo scripts de automação de arquivos ou trabalhando em fluxos de machine learning, essas técnicas vão ajudar você a escrever código Python mais limpo, rápido e fácil de manter.
FAQs
Como listar todos os arquivos em um diretório usando Python?
Use:
os.listdir(path)ou a opção moderna:
Path(path).iterdir()Como listar todos os arquivos recursivamente?
Use:
os.walk(path)ou:
Path(path).rglob("*")Como filtrar arquivos por extensão?
Use:
file.endswith(".json")ou:
Path(path).rglob("*.json")