Ao trabalhar com sistemas de arquivos em Python, uma tarefa comum é listar todos os arquivos em um diretório e, possivelmente, armazená-los em uma lista para processamento posterior. Python oferece várias maneiras de realizar isso, cada uma com suas próprias vantagens. Vamos explorar alguns desses métodos.
Usando os.listdir()
e os.path.isfile()
O módulo os
em Python é uma utilidade para interagir com o sistema operacional. os.listdir()
é um método que retorna uma lista de todas as entradas em um diretório fornecido pelo caminho, incluindo tanto arquivos quanto diretórios.
from os import listdir
from os.path import isfile, join
caminho = 'seu/caminho/do/diretorio'
somente_arquivos = [f for f in listdir(caminho) if isfile(join(caminho, f))]
TestarEste trecho de código fornecerá uma lista de nomes de arquivos no diretório especificado.
Usando os.walk()
Outro método fornecido pelo módulo os
é os.walk()
, que é usado para gerar os nomes dos arquivos em uma árvore de diretórios, percorrendo a árvore de cima para baixo ou de baixo para cima.
from os import walk
caminho = 'seu/caminho/do/diretorio'
f = []
for (caminho_dir, nomes_dir, nomes_arquivos) in walk(caminho):
f.extend(nomes_arquivos)
break
Isso listará arquivos no diretório superior. Se você quiser listar arquivos em todos os subdiretórios também, remova a instrução break
.
Usando o Módulo glob
O módulo glob
é particularmente útil porque permite correspondência de padrões e pode ser usado para listar arquivos e diretórios com extensões ou padrões específicos.
import glob
# Lista todos os arquivos e diretórios no caminho
print(glob.glob("/home/nomeusuario/*"))
# Lista todos os arquivos .txt no caminho
print(glob.glob("/home/nomeusuario/*.txt"))
O módulo glob
não listará arquivos ocultos (aqueles que começam com um ponto) a menos que sejam explicitamente incluídos no padrão.
Usando os.scandir()
no Python 3.5+
Python 3.5 introduziu um novo método os.scandir()
que é mais eficiente que os.listdir()
e retorna um iterador de objetos os.DirEntry
correspondentes às entradas no diretório fornecido pelo caminho.
import os
with os.scandir('seu/caminho/do/diretorio') as entradas:
for entrada in entradas:
if entrada.is_file():
print(entrada.name)
Usando pathlib
a partir do Python 3.4
O módulo pathlib
oferece objetos de caminho de alto nível. Veja como você pode usá-lo para listar arquivos:
import pathlib
# Lista todos os arquivos no diretório atual
lista_arquivos = [p for p in pathlib.Path('.').iterdir() if p.is_file()]
Resumo
Neste artigo, exploramos vários métodos para listar todos os arquivos em um diretório usando Python. Se você prefere o módulo os
tradicional com suas funções listdir()
e walk()
, as capacidades de correspondência de padrões do módulo glob
, a eficiência de os.scandir()
, ou a abordagem orientada a objetos de pathlib
, Python oferece uma variedade de ferramentas para atender às suas necessidades. Lembre-se de escolher o método que melhor se adapta ao seu caso de uso específico e à versão do Python.
Cursos de programação gratuitos com certificado
Aprenda a programar e desenvolva soluções para o seu trabalho com Python para alcançar novas oportunidades profissionais. Aqui na Asimov você encontra:
- Conteúdos gratuitos
- Projetos práticos
- Certificados
- +20 mil alunos e comunidade exclusiva
- Materiais didáticos e download de código
Comentários