Como renomear arquivos e diretórios com Python?

Como desenvolvedores Python, muitas vezes nos encontramos lidando com grandes conjuntos de dados, arquivos e diretórios. Renomear ou reorganizar essas entidades pode ser uma tarefa tediosa e extremamente trabalhosa, especialmente quando trabalhamos com vários arquivos e diretórios simultaneamente. Felizmente, para todos os familiarizados com Python, renomear arquivos e diretórios é uma atividade muito simples e eficiente. Neste post, exploraremos as várias maneiras de renomear arquivos e diretórios usando Python.
Método 1: módulo os
O módulo os integrado do Python possui um conjunto abrangente de funções para interagir com o sistema operacional e o sistema de arquivos dos nossos computadores. Portanto, ele é uma ótima solução para renomear arquivos e diretórios sem precisar de nenhuma instalação adicional. Para renomear um arquivo ou diretório, você pode usar a função rename() deste módulo. Veja como é fácil:
import os
# Substitua 'nome_antigo.txt' e 'nome_novo.txt' conforme suas necessidades
os.rename('nome_antigo.txt', 'nome_novo.txt')
Neste exemplo, renomeamos um arquivo de texto, mas você também pode usar o mesmo método para renomear arquivos de áudios, fotos, vídeos, CSV, e o que mais você precisar!
Outros métodos adicionais do módulo os que você também pode usar quando precisa renomear arquivos são relpath() e abspath(). Elas permitem obter os caminhos relativos e absolutos de um arquivo ou diretório antes de renomeá-los:
import os
# Retorna o caminho absoluto de um arquivo
caminho_absoluto = os.path.abspath('arquivo.txt')
# Renomeia o arquivo usando o caminho absoluto obtido
os.rename(caminho_absoluto, 'arquivo_renomeado.txt')
Método 2: módulo shutil
O shutil é outro excelente módulo integrado do Python que fornece funções para operações de arquivo de alto nível. Para renomear um arquivo ou diretório usando este módulo, podemos usar a função move():
import shutil
# Substitua 'nome_antigo.txt' e 'nome_novo.txt' de acordo com o nome dos seus arquivos
shutil.move('nome_antigo.txt', 'nome_novo.txt')
Método 3: módulo pathlib
O módulo pathlib é uma maneira mais moderna do Python para interagir com o sistema de arquivos. Ele oferece classes que representam caminhos do sistema de arquivos com semântica apropriada para diferentes sistemas operacionais. Para renomear um arquivo ou diretório usando o pathlib, você pode usar a função rename():
import pathlib
caminho_arquivo = pathlib.Path('nome_antigo.txt')
caminho_arquivo.rename(pathlib.Path('nome_novo.txt'))
Método 4: renomeação em série com um loop
Nos exemplos acima, mostramos vários módulos que você pode usar para renomear seus arquivos e diretórios de forma eficiente. Geralmente, não queremos renomear apenas um arquivo, mas vários. Portanto, vamos mostrar agora como você pode usar um for loop para renomear arquivos em escala. Para esse exemplo, usaremos novamente o módulo os, mas voce pode facilmente substituir a função os.rename() pela função shutil.move() or por métodos do pathlib.
import os
# Renomeia todos os arquivos com extensão '.txt' em um diretório usando um loop
caminho_diretorio = './'
for arquivo in os.listdir(caminho_diretorio):
if arquivo.endswith('.txt'):
novo_nome = f'{caminho_diretorio}/{arquivo.split(".")[0]}_novo.txt'
os.rename(os.path.join(caminho_diretorio, arquivo), novo_nome)
No exemplo acima, definimos o diretório de origem e listamos todos os seus arquivos. Depois, verificamos quais têm .txt para renomeá-los. Esse passo é apenas ilustrativo, pois o Python consegue modificar o nome de outros tipos de arquivos também. Portanto, se você precisa definir uma extensão específica, modifique o código conforme as suas necessidades.
Método 5: renomeação recursiva com os.walk()
Às vezes precisamos renomear vários arquivos e diretórios recursivamente. É nesse tipo de cenário que a função os.walk() é extremamente útil. Como seu nome indica, ela é outro método do módulo integrado os. Ela consegue navegar entre múltiplos diretórios e permitir a renomeação de todos os seus objetos. Veja um exemplo:
import os
# Renomeia todos os arquivos com extensão '.txt' em uma árvore de diretórios
for root, dirs, arquivos in os.walk('./'): # Define o arquivo root
for arquivo in arquivos:
if arquivo.endswith('.txt'):
novo_nome = f'{root}/{arquivo.split(".")[0]}_novo.txt'
os.rename(os.path.join(root, arquivo), novo_nome)
Neste exemplo, primeiro definimos o diretor de onde partiremos. Depois, usamos o os.walk() para percorrer recursivamente todos os diretórios dentro dele e renomear todos os arquivos .txt. Além de arquivos de texto, você pode usar o mesmo método para renomear arquivos de outros tipos.
Conclusão
Renomear arquivos e diretórios com Python é uma tarefa simples que pode ser realizada usando métodos dos módulos os, shutil, pathlib e renomeação recursiva com os.walk(). Você pode usar o método que achar mais conveniente para suas necessidades específicas. Lembre-se, ao trabalhar com sistemas de arquivos, esteja sempre atento a possíveis problemas, como permissões, conflitos ou perda de dados. Antes de executar um código de renomeação, sempre garanta que você está renomeando os arquivos corretos.