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}")
archivo.suffix da la extensión con el punto (".jpg"). .lower() para que .JPG y .jpg cuenten igual.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)
--dry-run y probarlo antes.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.