Programador Leigo
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.

Continue lendo

Compartilhar