Proyecto: un script que ordena tus archivos

Un script de Python que recorre una carpeta y mueve cada archivo a una subcarpeta según su tipo. Con pathlib, shutil y modo de prueba.

La carpeta de Descargas es un caos. Este proyecto es un script que la ordena solo: fotos a Imágenes, PDFs a Documentos, etc. Practicas recorrer carpetas, trabajar con rutas y mover archivos con seguridad.

Simulador

Aquí tienes una lista de archivos de mentira (edítala si quieres). Simular muestra el plan sin tocar nada; Organizar lo aplica:

Paso 1: decidir la carpeta de cada tipo

CARPETAS = {
    ".jpg": "Imagenes", ".jpeg": "Imagenes", ".png": "Imagenes", ".gif": "Imagenes",
    ".pdf": "Documentos", ".txt": "Documentos", ".docx": "Documentos", ".xlsx": "Documentos",
    ".mp3": "Audio", ".wav": "Audio",
    ".mp4": "Video", ".mov": "Video",
}

Paso 2: recorrer la carpeta con pathlib

from pathlib import Path

CARPETA = Path.home() / "Downloads"

for archivo in CARPETA.iterdir():
    if archivo.is_dir():
        continue                       # saltar subcarpetas
    destino_nombre = CARPETAS.get(archivo.suffix.lower())
    if destino_nombre is None:
        print(f"?  {archivo.name} (extensión desconocida)")
        continue
    print(f"{destino_nombre}/  <-  {archivo.name}")

Paso 3: mover con shutil (y crear la carpeta)

import shutil

def mover(archivo: Path, carpeta: str, dry_run: bool):
    destino = archivo.parent / carpeta
    destino.mkdir(exist_ok=True)        # no falla si ya existe
    if dry_run:
        print(f"[simulado] {archivo.name} -> {carpeta}/")
    else:
        shutil.move(str(archivo), str(destino / archivo.name))
        print(f"movido {archivo.name} -> {carpeta}/")

Paso 4: el modo prueba y los argumentos

import sys

def main():
    dry_run = "--dry-run" in sys.argv
    for archivo in CARPETA.iterdir():
        if archivo.is_file():
            carpeta = CARPETAS.get(archivo.suffix.lower())
            if carpeta:
                mover(archivo, carpeta, dry_run)

if __name__ == "__main__":
    main()

# uso:
#   python organizar.py --dry-run    (solo enseña qué haría)
#   python organizar.py              (lo hace de verdad)

Cómo seguir

  • Si ya existe un archivo con ese nombre en el destino, añadir un número: foto (2).jpg.
  • Organizar por fecha además de por tipo (carpetas 2024-05/).
  • Programarlo para que se ejecute solo cada día (cron en Linux, Programador de tareas en Windows).
  • Registrar lo que hace en un archivo organizar.log.