Renomear Múltiplos Arquivos em Lote Adicionando Prefixo ou Data em Python

Renomear Múltiplos Arquivos em Lote Adicionando Prefixo ou Data em Python

Ajustar manualmente o nome de dezenas ou centenas de arquivos é uma tarefa repetitiva e propensa a erros na rotina de TI. Este script em Python automatiza a renomeação em lote, percorrendo um diretório específico e adicionando um prefixo personalizado ou a data atual (ou de modificação) ao nome de cada arquivo. É a solução ideal para organizar relatórios, logs, backups ou arquivos de mídia de forma rápida e padronizada.

Python
import os
from datetime import datetime

def renomear_arquivos_em_lote(caminho_pasta: str, prefixo: str = "", adicionar_data: bool = True) -> None:
    """Adiciona prefixo e/ou data atual ao nome de todos os arquivos em um diretório."""
    if not os.path.exists(caminho_pasta):
        print(f"Erro: O diretório '{caminho_pasta}' não foi encontrado.")
        return

    # Formatar a data atual no padrão YYYYMMDD
    data_formatada = datetime.now().strftime("%Y%m%d_") if adicionar_data else ""

    for nome_arquivo in os.listdir(caminho_pasta):
        caminho_antigo = os.path.join(caminho_pasta, nome_arquivo)

        # Processa apenas arquivos, ignorando subpastas
        if os.path.isfile(caminho_antigo):
            # Monta o novo nome com os prefixos desejados
            novo_nome = f"{prefixo}{data_formatada}{nome_arquivo}"
            caminho_novo = os.path.join(caminho_pasta, novo_nome)

            # Evita renomear se o arquivo já possui a modificação
            if caminho_antigo != caminho_novo:
                os.rename(caminho_antigo, caminho_novo)
                print(f"Renomeado: '{nome_arquivo}' -> '{novo_nome}'")

# --- Exemplo de uso prático ---
if __name__ == "__main__":
    diretorio_exemplo = "./documentos_teste"

    # Criando estrutura e arquivos fictícios para demonstração
    os.makedirs(diretorio_exemplo, exist_ok=True)
    for f in ["relatorio1.pdf", "contrato.docx", "dados.txt"]:
        open(os.path.join(diretorio_exemplo, f), "a").close()

    # Executa a renomeação adicionando o prefixo 'PROJETO_' e a data atual
    renomear_arquivos_em_lote(
        caminho_pasta=diretorio_exemplo, 
        prefixo="PROJETO_", 
        adicionar_data=True
    )

Pontos-chave

  • os.rename(src, dst): Função nativa responsável por alterar o nome do arquivo diretamente no sistema operacional.

  • datetime.now().strftime(): Permite customizar a formatação da data/hora (ex: %Y%m%d para 20261023 ou %Y-%m-%d para 2026-10-23), garantindo ordenação cronológica automática dos arquivos.

  • Validação com os.path.isfile(): Essencial para evitar que subdiretórios dentro da pasta alvo sejam acidentalmente renomeados como se fossem arquivos.

  • Risco de Sobrescrita: Se o novo nome gerado já existir na pasta, o os.rename() irá sobrescrevê-lo no Linux/macOS ou lançar um erro FileExistsError no Windows. Adicione verificações com os.path.exists(caminho_novo) em ambientes críticos.

Comentários

Postagens mais visitadas deste blog

Gerando Relatórios em PDF com Python (ReportLab e FPDF)

Python para Computação Quântica: Introdução com Qiskit

C# e Banco de Dados: Como Conectar e Realizar Operações com SQL Server