Como listar arquivos em diretório em Python
Como obter uma lista de todos os arquivos em um diretório com Python
por Ian Currie
Ao lidar com operações relacionadas a arquivos em Python, uma etapa natural é obter uma lista de todos os arquivos e pastas em um diretório. No entanto, ao pesquisar sobre esse assunto, você pode se surpreender ao encontrar várias maneiras de fazer isso.
Quando você se depara com várias maneiras de fazer algo, pode ser um indicativo de que não há uma solução única para todos os problemas. Provavelmente, cada solução terá suas próprias vantagens e desvantagens. Esse é o caso quando se trata de obter uma lista do conteúdo de um diretório em Python.
Neste tutorial, vamos nos concentrar nas técnicas mais versáteis do módulo pathlib
para listar os itens em um diretório, mas também iremos abordar um pouco sobre algumas ferramentas alternativas.
Antes do lançamento do pathlib
no Python 3.4, se você quisesse trabalhar com caminhos de arquivo, usaria o módulo os
. Embora isso fosse muito eficiente em termos de desempenho, você teria que lidar com todos os caminhos como strings.
Manipular caminhos como strings pode parecer bom no começo, mas uma vez que você começa a combinar vários sistemas operacionais, as coisas ficam mais complicadas. Você também acaba com um monte de código relacionado à manipulação de strings, que pode ficar muito distante do que um caminho de arquivo realmente é. As coisas podem ficar obscuras muito rapidamente.
Isso não quer dizer que trabalhar com caminhos como strings não seja viável - afinal de contas, os desenvolvedores se viraram bem sem o pathlib
por muitos anos! O módulo pathlib
apenas cuida de muitas das coisas complicadas e permite que você se concentre na lógica principal do seu código.
Tudo começa com a criação de um objeto Path
, que será diferente dependendo do seu sistema operacional (SO). No Windows, você obterá um objeto WindowsPath
, enquanto no Linux e macOS será retornado um objeto PosixPath
:
Com esses objetos específicos para cada sistema operacional, você pode aproveitar os diversos métodos e propriedades disponíveis para manipular os caminhos de forma eficiente.
Aqui estão algumas técnicas para obter uma lista de todos os arquivos em um diretório com Python:
1. Listando de forma recursiva com .rglob()
O método .rglob()
permite listar de forma recursiva todos os arquivos em um diretório e seus subdiretórios. Veja um exemplo de código:
Esse código irá listar todos os arquivos no diretório desktop
e em seus subdiretórios. O padrão "*"
significa que todos os arquivos serão incluídos na listagem.
2. Usando um padrão de pesquisa com Python Glob para listagem condicional
Você também pode fazer uma listagem condicional usando padrões de pesquisa do Python Glob. Isso permite filtrar os arquivos com base em seus nomes ou extensões. Veja alguns exemplos:
Listagem condicional usando .glob()
Essa listagem irá mostrar apenas os arquivos com a extensão .txt
no diretório desktop
.
Listagem condicional usando .rglob()
Nesse exemplo, apenas os arquivos com a extensão .py
serão listados no diretório desktop
e em seus subdiretórios.
Filtragem avançada com os métodos do Glob
Por meio dos métodos do Glob
, você pode fazer uma filtragem mais avançada, usando múltiplos padrões de pesquisa. Por exemplo:
Nesse caso, apenas os arquivos que possuem nomes como file1.txt
, file2.txt
e file3.txt
serão listados no diretório desktop
.
3. Excluindo diretórios indesejados da listagem
Às vezes, pode ser necessário excluir diretórios específicos da listagem. Existem diferentes maneiras de fazer isso:
Usando .rglob()
para filtrar diretórios inteiros
Você pode usar o método .rglob()
em combinação com um padrão de pesquisa para filtrar diretórios inteiros. Veja um exemplo:
Nesse código, apenas arquivos serão listados, excluindo assim os diretórios.
Criando uma função .iterdir()
recursiva
Outra opção é criar uma função recursiva que utilize o método .iterdir()
. Veja como fazer isso:
Dessa forma, você pode iterar sobre todos os arquivos em um diretório e seus subdiretórios, excluindo os diretórios da listagem.
Essas são apenas algumas das técnicas para obter uma lista de todos os arquivos em um diretório com Python. Cada uma delas tem suas próprias vantagens e desvantagens, então escolha aquela que melhor se adequa às suas necessidades.
Em resumo, o módulo pathlib
do Python é uma ferramenta poderosa que oferece várias maneiras de manipular caminhos de arquivos e pastas. Com as técnicas apresentadas neste tutorial, você estará apto a obter uma lista completa de todos os arquivos em um diretório com Python.
Esperamos que este artigo tenha sido útil para você. Continue aprendendo e praticando Python para fortalecer suas habilidades!