Script de ejemplo
Descargar .pyCodigo base para procesar una carpeta de entrada, validar extensiones, copiar archivos y registrar el resultado.
Problema
Una carpeta recibe archivos con nombres distintos, fechas mezcladas y estructuras parecidas. Antes de analizar, alguien debe ordenar todo a mano.
Convencion propuesta
| Elemento | Regla |
|---|---|
| Carpeta origen | entrada/ |
| Carpeta destino | ordenados/ |
| Nombre final | fecha + nombre limpio + extension |
Codigo base
from pathlib import Path
from datetime import datetime
import shutil
ENTRADA = Path("entrada")
SALIDA = Path("ordenados")
LOG = Path("log_archivos.csv")
SALIDA.mkdir(exist_ok=True)
permitidos = {".xlsx", ".csv", ".txt"}
lineas_log = ["archivo_original,estado,archivo_destino,mensaje"]
for archivo in ENTRADA.iterdir():
if not archivo.is_file():
continue
extension = archivo.suffix.lower()
if extension not in permitidos:
lineas_log.append(f"{archivo.name},rechazado,,Extension no permitida")
continue
fecha = datetime.fromtimestamp(archivo.stat().st_mtime).strftime("%Y%m%d")
nombre_limpio = archivo.stem.lower().replace(" ", "_")
destino = SALIDA / f"{fecha}_{nombre_limpio}{extension}"
shutil.copy2(archivo, destino)
lineas_log.append(f"{archivo.name},procesado,{destino.name},OK")
LOG.write_text("\n".join(lineas_log), encoding="utf-8")Enfoque
- Definir convencion de nombres y carpetas destino.
- Leer metadatos de archivo y validar extensiones.
- Renombrar con fecha, fuente y tipo de contenido.
- Generar un log con archivos procesados y rechazados.
Validaciones
Todo movimiento debe ser reversible o al menos trazable. El log es tan importante como la automatizacion.