Iniciando a minha série de posts aqui no blog, hoje vou ensiná-los uma maneira bem prática de renomear os arquivos de um diretório no seu computador utilizando a linguagem de programação Python.

Neste exemplo, criaremos um algoritmo para remover todos os números do nome das fotos de uma pasta do seu computador.

 

Este tutorial é dedicado a programadores de todos os níveis, sem a necessídade prévia de conhecimento em Python. O algoritmo final será bem simples de ser compreendido, mas é interessante o leitor iniciante já possuir uma noção do o uso de funções, parâmetros e loops.

 

Escolhi utilizar o PyCharm como ambiente de desenvolvimento, mas sinta-se livre para usar o editor que você quiser, desde que você tenha o Python instalado a partir da versão 2 em sua máquina, tudo ocorrerá bem.

 

Usaremos este diretório como exemplo:

Você pode baixar esta pasta clicando aqui.

 

Passo 1: Obtendo o nome dos arquivos do diretório

 

Crie um novo projeto chamado renomeando_arquivos, e um novo arquivo python de mesmo nome (renomeando_arquivos.py).

Crie uma função chamada renomear, e dentro dela crie outra função chamada listdir.

listdir é uma função do Python que tem como objetivo listar tudo que há dentro de um determinado diretório do sistema operacional. Devemos também inserir no parâmetro desta, o endereço do diretório que queremos listar em forma de String:

listdir(r"/home/SeuUsuario/Desktop/pasta")

Neste exemplo, a minha String é um diretório no Linux chamado “pasta” que está na área de trabalho do meu usuário “SeuUsuario”.

Se você usa Windows, e salvou os arquivos na área de trabalho, o endereço do diretório pode estar mais ou menos assim:

listdir(r"C:\Users\SeuUsuario\Desktop\pasta")

Você percebeu que há uma letra r antes de iniciarmos a String? Isto quer dizer uma representação para rawpack, que significa informarmos ao Python que devemos deixar a String exatamente do jeito de digitamos, e  que a linguagem não deve interpretar esta String nenhuma outra forma.

 

Outra informação muito importante que devemos adicionar é um módulo. Como estamos manipulando diretamente arquivos do sistema operacional, precisamos atribuir uma biblioteca que faça o Python entender esta comunicação. Para isso inserimos no início do algoritmo o módulo os, e atribuímos o mesmo junto a função listdir.

Para completar, vamos armazenar esta função em uma variável chamada lista_fotos, e motrá-la ao usuário com a função print. Por fim, invocaremos a nossa função renomear. O código ficará assim:

import os

def renomear():

    lista_fotos = os.listdir(r"/home/SeuUsuario/Desktop/pasta")
    print(lista_fotos)

renomear()

Execute o algoritmo o e resultado será uma lista, o que nada mais é do que um vetor de Strings, com todos os arquivos do nosso diretório escolhido:

['27rio-de-janeiro.jpg', '74sao-paulo.jpg', '82londres.jpg', '92istambul.jpg', '92toquio.jpg']

 

 

Passo 2: Renomeando os arquivos

 

Após listarmos nossos arquivos,  precisamos renomeá-los.

Como estamos trabalhando com um vetor, a maneira mais clássica é utilizarmos um loop para alterarmos cada uma das posições.

Nosso loop será um laço de repetição for,  com nós já temos nossa informação armazenada na variável lista_fotos, o loop irá nos permitir trabalhar com cada um dos arquivos por vez, armazenando-os internamente em uma variável chamada nome_foto.

Utilizaremos também duas novas funções dentro do nossa estrutura de repetição, a rename,  que terá dois parâmetros: O primeiro é o valor(variável) que queremos mudar, e o segundo será a nossa segunda nova função chamada translate, que remove o que queremos (números e seus espaços nos arquivos):

import os

def renomear():

    lista_fotos = os.listdir(r"/home/SeuUsuario/Desktop/pasta")
    print(lista_fotos)

    for nome_foto in lista_fotos:
        os.rename(nome_foto, nome_foto.translate())

renomear()

“Mas o que necessariamente você quer remover? E aonde?”

São essas as perguntas que o Python faz para nós no estado atual deste algoritmo. Nós dizemos para que a linguagem leia o caminho dos nossos arquivos, mas não informamos aonde estes arquivos realmente estão. Para isso devemos inserir antes do nosso laço de repetição outra função chamada chdir. O obetivo desta função é simples: Solicitar ao sistema operacional que o algoritmo procure no diretório que listamos (com a função listdir) aonde os arquivos estão.

 

Para finalizarmos, devemos informar o que necessariamente queremos remover das Strings do nosso vetor. Já sabemos que a função translate faz este trabalho, e para iformarmos a ela sobre o que queremos, devemos utilizar nossa ultima função: A maketrans.

 

Diferentemente das outras funções, a maketrans necessita do módulo str., pois o objetivo dela é justamente agir nos caracteres de um vetor. Como o módulo str já é integrado ao Python, não há necessidade de importarmos no início do código, como fizemos com o módulo os.

Para facilitar a leitura, vamos armazenar a função maketrans em uma variável chamada novo_nome:

import os

def renomear():

    lista_fotos = os.listdir(r"/home/SeuUsuario/Desktop/pasta")
    print(lista_fotos)

    os.chdir(r"/home/SeuUsuario/Desktop/pasta")

    for nome_foto in lista_fotos:
        novo_nome = str.maketrans("","","0123456789")
        os.rename(nome_foto, nome_foto.translate(novo_nome))
renomear()

 

Tudo pronto! Agora podemos executar o nosso algoritmo:

['rio-de-janeiro.jpg', 'sao-paulo.jpg', 'londres.jpg', 'istambul.jpg', 'toquio.jpg']

 

Resultado do diretório após executarmos o algoritmo:

 

Neste exemplo foi usado um diretório com apenas 5 arquivos, mas imagine se tivessemos 10 vezes mais arquivos? Seria um trabalho e tanto renomear cada um, certo? A liguagem Python é fantástica, principalmente para automatizar tarefas no sistema operacional.

 

Com isso, finalizamos aqui o tutorial.

Obrigado pela atenção!