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
Postar um comentário