Percorrendo uma Árvore de Diretórios
os.walk(top, topdown=True, onerror=None, followlinks=False) é uma função do módulo os em Python que gera os nomes de arquivos em uma árvore de diretórios, percorrendo a árvore de cima para baixo (top-down) ou de baixo para cima (bottom-up). Por padrão, os.walk() gera os nomes de arquivos em uma árvore de diretórios de cima para baixo. Para cada diretório na árvore enraizada no diretório top (incluindo o próprio top), ele produz uma tupla de 3 elementos (dirpath, dirnames, filenames).
Aqui está um exemplo de como você pode usar os.walk() para imprimir todos os arquivos em um diretório e seus subdiretórios:
import os
## Print all files in a directory and its subdirectories
for root, dirs, files in os.walk('.'):
for file in files:
print(os.path.join(root, file))
Este código começará no diretório atual (indicado por '.') e percorrerá recursivamente todos os subdiretórios, imprimindo o caminho completo de cada arquivo que encontrar.
Aqui está outro exemplo onde você pode usar os.walk() para procurar um arquivo específico com uma extensão específica em um diretório:
import os
def search_file(directory, file_extension):
for root, dirs, files in os.walk(directory):
for file in files:
if file.endswith(file_extension):
print(os.path.join(root, file))
search_file('.','.txt')
Isso procurará todos os arquivos com a extensão '.txt' e imprimirá o caminho completo do arquivo.
os.walk() é uma função poderosa que pode ser usada para muitas tarefas, como pesquisar arquivos, analisar estruturas de diretórios e muito mais.
Vale a pena notar que os.walk é um gerador (generator), o que significa que ele gera os valores em tempo real, em vez de mantê-los todos na memória. Isso o torna eficiente para lidar com grandes árvores de diretórios.