Script em Python para Organizar a Pasta de Downloads Automaticamente



Python: Como Criar um Organizador Automático de Pastas por Extensão

Manter a pasta de Downloads ou Documentos organizada manualmente exige tempo. Com os módulos nativos os e shutil do Python, você pode criar um script simples que lê todos os arquivos de um diretório e os move automaticamente para subpastas categorizadas pela extensão do arquivo (.pdf, .jpg, .zip, etc.).

Script Organizador de Arquivos

O script mapeia as extensões mais comuns para pastas temáticas e cria os diretórios automaticamente caso eles ainda não existam.

Python
import os
import shutil

def organizar_pasta(diretorio_alvo):
    # Mapeamento de pastas e suas respectivas extensões
    CATEGORIAS = {
        "Documentos": [".pdf", ".docx", ".doc", ".txt", ".xlsx", ".pptx", ".csv"],
        "Imagens": [".jpg", ".jpeg", ".png", ".gif", ".webp", ".svg"],
        "Compactados": [".zip", ".rar", ".7z", ".tar", ".gz"],
        "Executaveis_Instaladores": [".exe", ".msi", ".iso", ".deb"],
        "Audios_Videos": [".mp3", ".wav", ".mp4", ".mkv", ".avi"]
    }

    # Garante que o caminho fornecido existe
    if not os.path.exists(diretorio_alvo):
        print(f"❌ O diretório '{diretorio_alvo}' não foi encontrado.")
        return

    # Percorre todos os itens da pasta alvo
    for arquivo in os.listdir(diretorio_alvo):
        caminho_completo = os.path.join(diretorio_alvo, arquivo)

        # Ignora se for uma pasta
        if os.path.isdir(caminho_completo):
            continue

        # Separa o nome da extensão do arquivo
        _, extensao = os.path.splitext(arquivo)
        extensao = extensao.lower()

        # Procura a categoria correspondente para o arquivo
        movido = False
        for pasta_destino, extensoes_aceitas in CATEGORIAS.items():
            if extensao in extensoes_aceitas:
                caminho_pasta_destino = os.path.join(diretorio_alvo, pasta_destino)
                
                # Cria a subpasta se não existir
                os.makedirs(caminho_pasta_destino, exist_ok=True)
                
                # Move o arquivo
                shutil.move(caminho_completo, os.path.join(caminho_pasta_destino, arquivo))
                print(f"📦 Mover: {arquivo} -> {pasta_destino}/")
                movido = True
                break

        # Caso a extensão não esteja mapeada, move para a pasta 'Outros'
        if not movido and extensao != "":
            pasta_outros = os.path.join(diretorio_alvo, "Outros")
            os.makedirs(pasta_outros, exist_ok=True)
            shutil.move(caminho_completo, os.path.join(pasta_outros, arquivo))
            print(f"📦 Mover: {arquivo} -> Outros/")

    print("✅ Organização concluída com sucesso!")

# Exemplo de uso (altere para o caminho da sua pasta):
pasta_para_organizar = "C:/Users/SeuUsuario/Downloads"
organizar_pasta(pasta_para_organizar)

Pontos-Chave

  • os.path.splitext(arquivo): Divide com segurança o nome do arquivo da sua extensão (ex: extrai .pdf de relatorio.pdf).

  • extensao.lower(): Padroniza as extensões em letras minúsculas para evitar erros com arquivos salvos em caixa alta (ex: .JPG vs .jpg).

  • os.makedirs(..., exist_ok=True): Cria a subpasta de destino se ela não existir e previne exceções caso a pasta já tenha sido criada anteriormente.

  • shutil.move(): Função responsável por transferir o arquivo de sua localização atual para o novo diretório configurado.

  • os.path.isdir(): Garante que o script ignore subpastas já existentes dentro do diretório para evitar mover diretórios inteiros por engano.


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