Se sua área de trabalho ou pasta de downloads é um caos, este projeto é para você! Aprenda a criar um script em Python que organiza automaticamente seus arquivos com base em sua extensão (ex: imagens em “Imagens”, documentos em “Documentos”).
O que você vai aprender:
- Monitorar uma pasta em busca de novos arquivos
- Identificar a extensão de cada arquivo
- Criar pastas conforme as extensões
- Mover arquivos para os locais corretos
- Agendar a execução automática do script
Transforme a bagunça digital em ordem com a magia da automação!
Funcionalidades Extras:
- Organização por data de criação
- Renomeação automática de arquivos
- Integração com Google Drive/Dropbox
- Interface gráfica opcional
Ferramentas utilizadas:
- Python 3.x – linguagem principal
os
– manipulação de arquivos e pastasshutil
– movimentação de arquivostime
– controle de temposchedule
(opcional) – agendamento automáticologging
(opcional) – monitoramento e registro
Pré-requisitos:
- Python instalado (
python --version
) - Conhecimento básico de Python
- Editor de código (VS Code, PyCharm, etc.)
- Pasta para organizar (ex: Downloads)
- Terminal para execução
1. Instale a biblioteca schedule
(opcional):
pip install schedule
2. Código Python:
import os
import shutil
import time
import schedule
import logging
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
PASTA_A_ORGANIZAR = "/Users/seu_usuario/Downloads"
EXTENSOES_E_PASTAS = {
"pdf": "Documentos",
"docx": "Documentos",
"jpg": "Imagens",
"jpeg": "Imagens",
"png": "Imagens",
"mp3": "Musicas",
"mp4": "Videos",
"zip": "Compactados",
"exe": "Executaveis"
}
def organizar_arquivos():
logging.info("Iniciando a organização dos arquivos...")
for arquivo in os.listdir(PASTA_A_ORGANIZAR):
caminho_completo = os.path.join(PASTA_A_ORGANIZAR, arquivo)
if os.path.isdir(caminho_completo):
continue
try:
nome, extensao = os.path.splitext(arquivo)
extensao = extensao[1:].lower()
if extensao in EXTENSOES_E_PASTAS:
pasta_destino = os.path.join(PASTA_A_ORGANIZAR, EXTENSOES_E_PASTAS[extensao])
if not os.path.exists(pasta_destino):
os.makedirs(pasta_destino)
logging.info(f"Pasta '{EXTENSOES_E_PASTAS[extensao]}' criada.")
shutil.move(caminho_completo, os.path.join(pasta_destino, arquivo))
logging.info(f"Arquivo '{arquivo}' movido para '{EXTENSOES_E_PASTAS[extensao]}'")
else:
logging.warning(f"Extensão '{extensao}' não mapeada.")
except Exception as e:
logging.error(f"Erro ao mover '{arquivo}': {e}")
organizar_arquivos()
3. Personalização:
- Altere
PASTA_A_ORGANIZAR
com o caminho da sua pasta - Edite
EXTENSOES_E_PASTAS
conforme seus tipos de arquivos - Use
logging.INFO
,WARNING
ouERROR
para ajustar os logs
4. Executando:
python organizar_arquivos.py
5. Agendamento (opcional):
Descomente a linha com schedule.every().day.at()
para definir um horário fixo e use um agendador do sistema como o Task Scheduler (Windows) ou cron (Linux/macOS).
6. Lidando com arquivos duplicados:
Para evitar sobrescrições, você pode programar o script para renomear arquivos repetidos, como documento_1.pdf
, documento_2.pdf
, etc.
Dicas finais:
- Faça um teste em uma pasta de cópia
- Tenha cuidado com arquivos
.exe
e similares - Implemente
try...except
para tratar erros - Use logs para acompanhar o que está sendo feito
- Faça backup antes da primeira execução
Pronto! Agora sua organização digital está nas mãos do Python 🚀