Automação
9 min leitura
13 MAR 2026
Como organizar arquivos e pastas com Python
Renomear, mover, copiar e organizar arquivos em massa com pathlib e shutil.
Chega de fazer na mão
Renomear 200 arquivos, organizar downloads por extensão, limpar pastas temporárias — tudo isso pode ser automatizado com Python em poucas linhas.
pathlib: o canivete suíço de caminhos
O módulo pathlib é a forma moderna de trabalhar com caminhos de arquivos:
from pathlib import Path
# Caminho atual
pasta = Path(".")
# Listar tudo no diretorio
for item in pasta.iterdir():
print(item.name, "- pasta" if item.is_dir() else "- arquivo")
Navegando entre pastas
from pathlib import Path
home = Path.home()
documentos = home / "Documents"
arquivo = documentos / "relatorio.pdf"
print(arquivo.exists()) # True ou False
print(arquivo.suffix) # .pdf
print(arquivo.stem) # relatorio
print(arquivo.parent) # /Users/.../Documents
O operador / é usado para construir caminhos — muito mais legível que os.path.join.
Listando arquivos com filtro
from pathlib import Path
pasta = Path("downloads")
# Todos os PDFs
pdfs = list(pasta.glob("*.pdf"))
# Todas as imagens (qualquer subpasta)
imagens = list(pasta.rglob("*.png"))
# Multiplas extensoes
for ext in ["*.jpg", "*.jpeg", "*.png"]:
for img in pasta.glob(ext):
print(img.name)
Renomeando arquivos em massa
from pathlib import Path
pasta = Path("fotos")
for i, foto in enumerate(sorted(pasta.glob("*.jpg")), start=1):
novo_nome = pasta / f"viagem_{i:03d}.jpg"
foto.rename(novo_nome)
print(f"{foto.name} -> {novo_nome.name}")
# IMG_4521.jpg -> viagem_001.jpg
# IMG_4522.jpg -> viagem_002.jpg
Copiando e movendo com shutil
O pathlib não copia arquivos — para isso usamos shutil:
import shutil
from pathlib import Path
origem = Path("relatorio.pdf")
destino = Path("backup/relatorio.pdf")
# Copiar arquivo
shutil.copy2(origem, destino) # copy2 preserva metadados
# Mover arquivo
shutil.move(str(origem), str(destino))
# Copiar pasta inteira
shutil.copytree("projeto", "projeto_backup")
# Deletar pasta inteira (cuidado!)
shutil.rmtree("pasta_temporaria")
Organizando arquivos por extensão
Um script prático para organizar sua pasta de downloads:
from pathlib import Path
import shutil
pasta = Path("downloads")
# Mapeamento de extensoes para pastas
categorias = {
"imagens": [".jpg", ".jpeg", ".png", ".gif", ".svg"],
"documentos": [".pdf", ".doc", ".docx", ".txt", ".xlsx"],
"videos": [".mp4", ".avi", ".mkv", ".mov"],
"musica": [".mp3", ".wav", ".flac"],
"codigo": [".py", ".js", ".html", ".css"],
}
for arquivo in pasta.iterdir():
if arquivo.is_dir():
continue
destino = None
for categoria, extensoes in categorias.items():
if arquivo.suffix.lower() in extensoes:
destino = pasta / categoria
break
if destino is None:
destino = pasta / "outros"
destino.mkdir(exist_ok=True)
shutil.move(str(arquivo), str(destino / arquivo.name))
print(f"{arquivo.name} -> {destino.name}/")
Monitorando mudanças em pastas
from pathlib import Path
import time
pasta = Path("entrada")
processados = set()
print("Monitorando pasta...")
while True:
for arquivo in pasta.glob("*.csv"):
if arquivo.name not in processados:
print(f"Novo arquivo: {arquivo.name}")
processados.add(arquivo.name)
# processa o arquivo aqui
time.sleep(5)
Resumo
| Módulo | Para que serve |
|---|---|
pathlib.Path |
Criar, navegar e manipular caminhos |
Path.glob() |
Listar arquivos com filtro |
Path.rename() |
Renomear arquivos |
shutil.copy2() |
Copiar arquivos |
shutil.move() |
Mover arquivos |
shutil.copytree() |
Copiar pastas inteiras |
Com pathlib e shutil, você tem tudo que precisa para nunca mais organizar arquivos manualmente.