Como listar arquivos de uma pasta no Python?

Para listar os arquivos de um diretório/pasta no Python, basta utilizamos a função os.walk. Suponhamos que temos a seguinte estrutura de diretório:

pasta
    └── 1
        ├── 2
        │   ├── 3
        │   │   └── file.txt
        │   ├── file_2.txt
        │   ├── file_3.txt
        │   └── file.txt
        ├── 2a
        │   └── file.txt
        └── file.txt

Basta apenas usar o seguinte código:

import os
pasta = './pasta'
for diretorio, subpastas, arquivos in os.walk(pasta):
    for arquivo in arquivos:
        print(os.path.join(diretorio, arquivo))

O resultado será parecido com isso

./pasta/1/file.txt
./pasta/1/2a/file.txt
./pasta/1/2/file_2.txt
./pasta/1/2/file_3.txt
./pasta/1/2/file.txt
./pasta/1/2/3/file.txt

Caso deseje retornar o caminho absoluto (caminho completo), você pode utilizar a função os.path.realpath. Essa função retorna o nome completo do diretório, ao invés de utilizar o caminho relativo ( caminho com . ou ..).

import os
pasta = './pasta'
for diretorio, subpastas, arquivos in os.walk(pasta):
    for arquivo in arquivos:
        print(os.path.join(os.path.realpath(diretorio), arquivo))

O que faz a função os.walk?

Resumidamente, os.walk retorna os nomes dos arquivos em uma árvore de diretórios. Em cada item da iteração, existe uma tupla com três elementos (dirpath, dirnames, filenames).

  • dirpath é uma string, o caminho para o diretório.
  • dirnames é uma lista dos nomes dos subdiretórios em dirpath (excluindo '.'e '..').
  • filenames é uma lista dos nomes dos arquivos.

Para mais informações, você pode consultar a documentação do Python.