Como Listar Arquivos de uma Pasta e de suas Subpastas

Introdução

Uma das vantagens do Python é permitir a criação de scripts curtos e funcionais. O código abaixo lista todos os arquivos de uma pasta informada e de suas subpastas e escreve seus nomes na tela.


A seguir, é explicada a função de cada linha de código.

Em (1), é feita a importação do módulo os, o qual apresenta funcionalidades dependentes do sistema operacional, como manipular caminhos de arquivos. Sua importação é necessária para que seja possível utilizar a função os.walk, a qual percorre (ou "caminha") por uma pasta e suas subpastas. 

Em (3), é indicada a pasta cujos arquivos se deseja listar. O nome da pasta está indicado entre aspas e é salvo na variável pasta_alvo. O r antes do caminho tem a função de forçar o interpretador Python a ler o caminho como uma string pura, evitando que uma \ seguida de t ou n seja interpretada como uma tabulação ou mudança de linha, respectivamente.

Em (5), a função os.walk é aplicada na pasta alvo, utilizando um laço de repetição for. Essa linha pode ser lida da seguinte forma: "Para cada pasta, subpastas dessa pasta e arquivos dessa pasta que estejam dentro da pasta alvo informada, faça o que segue abaixo." Ou seja, o código entra em uma pasta mãe, verifica quais são as subpastas e os arquivos presentes nelas, depois entra em uma subpasta, que passa a ser a pasta mãe, e verifica quais são as subpastas e arquivos presentes nela e assim por diante. Nas linhas seguintes, é dito o que se deseja fazer com esses dados.

Em (6) é impresso o nome da pasta mãe atual.

Em (7) é feito outro laço de repetição, dentro do laço maior, para que seja manipulado  o nome de cada arquivo dentro da lista de arquivos da pasta atual armazenda em lista_arquivos e se possa fazer uma ação. Essa ação é feita na linha (9), onde é pedido que o nome do arquivo seja impresso na tela.

Na forma como o código está estruturado, a condição da linha (8) sempre será verdadeira e portanto o nome de todos os arquivos encontrados será impresso. Porém, o True pode ser substituido por outras expressões, de modo que somente arquivos que atendam a determinado requisito sejam impressos, por exemplo aqueles que tenham determinada extensão ou contenham determinada palavra no nome. Por exemplo, para imprimir somente o nome dos arquivos em formato PDF, a cláusula True poderia ser substituída por nome_arquivo.endswith(".pdf"), sem alterar mais nada no código. 



Para imprimir somente os arquivos que contenham geologia no nome, o True deve ser substituído por "geologia" in nome_arquivo, novamente, sem alterar mais nada no código. 



Com pequenas alterações como essas, o programa é capaz de tomar decisões sobre qual arquivo imprimir, baseado nas instruções passadas. O código apresentado acima é simples, mas funcional, e utiliza elementos bastante comuns na programação: identação, variável, lista, condicional, laço de repetição, importação de bibliotecas, uso de função, interação com o sistema operacional, entre outros. O código pode ser modificado para incluir outras funcionalidades, como imprimir o nome da pasta e do arquivo juntos, salvar os nomes em um arquivo de texto ou Excel em vez de imprimir na tela, além de ser estruturado utilizando funções ou classes; tudo vai depender dos objetivos que se deseja atingir.


Ficou com alguma dúvida ou tem alguma sugestão? Deixe nos comentários para que eu possa lhe ajudar!

Comentários

Postagens mais visitadas deste blog

Download e Instalação do QGIS

Conversão de Arquivos de Simbologia ArcGIS para QGIS - Complemento SLYR

Composição do Shapefile e Como Restaurar um Shapefile Incompleto