Listar subdiretórios em Python

Muhammad Maisam Abbas 30 janeiro 2023
  1. Listar subdiretórios com o módulo glob em Python
  2. Listar subdiretórios com a função os.scandir() em Python
  3. Listar subdiretórios com a função os.walk() em Python
Listar subdiretórios em Python

Existem três métodos eficazes que você pode usar para listar todos os subdiretórios dentro de um diretório especificado em Python: a função glob.glob (), a função os.scandir () e a função os.walk (). Este tutorial demonstrará como você pode trabalhar com essas funções para listar subdiretórios em Python.

Listar subdiretórios com o módulo glob em Python

O módulo glob é usado para obter nomes de caminhos que correspondem a um padrão específico. Podemos usar a função glob() dentro do módulo glob do Python para listar todos os subdiretórios de um diretório principal especificado especificando /*/ no final do caminho do diretório. O seguinte trecho de programa nos mostra como listar todos os subdiretórios dentro do diretório principal usando o módulo glob:

import os
from glob import glob

glob(os.getcwd() + "/*/", recursive=True)

Resultado:

['/content/sample_data/', '/content/subdirectory/']

Listamos todos os subdiretórios de nosso diretório de trabalho atual com o módulo glob no código acima. A desvantagem desse método é que ele não exibe nenhum diretório oculto ou diretório onde o nome do diretório comece com um ponto .; ele mostra apenas os subdiretórios imediatos.

Listar subdiretórios com a função os.scandir() em Python

os é um módulo embutido em Python que pode ser usado para muitas funções relacionadas ao sistema operacional, como armazenamento de arquivos. A função os.scandir() pode ser usada para listar todos os subdiretórios de um diretório principal especificado. Esta função usa o caminho do diretório como um parâmetro de entrada e retorna um iterador que pode ser usado para iterar por meio de arquivos e diretórios dentro do caminho.

O seguinte trecho de código nos mostra como listar todos os subdiretórios dentro do diretório principal com a função os.scandir():

import os

[f.path for f in os.scandir(os.getcwd()) if f.is_dir()]

Resultado:

['/content/.config',
 '/content/.ipynb_checkpoints',
 '/content/sample_data',
 '/content/subdirectory']

Listamos todos os subdiretórios de nosso diretório de trabalho atual com a função os.scandir() no código acima. Este processo é uma melhoria em relação à abordagem anterior porque também lista os diretórios ocultos ou os diretórios onde o nome do diretório começa com um ponto .. A única desvantagem desse método é que ele mostra apenas os diretórios filho imediatos do diretório pai principal. Ele não obtém os subsubdiretórios dentro do diretório principal.

Listar subdiretórios com a função os.walk() em Python

A função os.walk() é outro método que pode ser usado para listar todos os subdiretórios dentro de um único diretório principal em Python. A função os.walk() pega o caminho do diretório principal como um parâmetro de entrada e retorna um conjunto de tuplas, onde o primeiro elemento de cada tupla é o caminho de um subdiretório dentro da árvore de diretórios. Isso inclui todos os subdiretórios e seus subsubdiretórios até que a árvore de diretórios termine.

A função os.walk() também nos fornece os diretórios ocultos ou os diretórios onde o nome do diretório começa com um ponto .. O seguinte trecho de código nos mostra como listar todos os subdiretórios dentro de um diretório principal com a função os.walk():

import os

[x[0] for x in os.walk(os.getcwd())]

Resultado:

['/content',
 '/content/.config',
 '/content/.config/logs',
 '/content/.config/logs/2021.05.06',
 '/content/.config/configurations',
 '/content/.ipynb_checkpoints',
 '/content/sample_data',
 '/content/sample_data/.ipynb_checkpoints',
 '/content/sample_data/subsubdirectory',
 '/content/subdirectory']

Listamos todos os subdiretórios de nosso diretório de trabalho atual com a função os.scandir() no programa acima. Como podemos ver, a saída mostra todos os diretórios dentro da árvore de diretórios. O resultado também inclui todos os diretórios ocultos.

Embora a abordagem os.walk() nos mostre todos os subdiretórios e os subsubdiretórios com todos os diretórios ocultos, todos os métodos discutidos acima têm seus próprios casos de uso exclusivos e são úteis em diferentes cenários. A melhor abordagem entre as que discutimos depende do problema específico que você está tentando resolver.

Muhammad Maisam Abbas avatar Muhammad Maisam Abbas avatar

Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.

LinkedIn

Artigo relacionado - Python Directory