Automatizar

Renombrar cientos de archivos en lote con Python

Un script corto que renombra archivos de forma masiva siguiendo un patrón, con vista previa antes de tocar nada. La automatización que reemplaza una hora de trabajo manual.

Tienes una carpeta con 300 fotos llamadas IMG_0001.jpg, IMG_0002.jpg… y quieres que sean vacaciones-2026-001.jpg. Hacerlo a mano es una tarde perdida. Con Python son diez líneas y treinta segundos.

El enfoque seguro: primero mirar, luego tocar

La regla de oro al automatizar cambios sobre archivos: nunca renombres a ciegas. Primero genera una vista previa de qué va a pasar, revísala, y solo entonces ejecuta. Un renombrado mal hecho sobre cientos de archivos es un dolor de cabeza difícil de deshacer.

El script

from pathlib import Path

CARPETA = Path("./fotos")
PREFIJO = "vacaciones-2026"
EXTENSION = ".jpg"

# Ordenamos para que la numeración sea consistente
archivos = sorted(CARPETA.glob(f"*{EXTENSION}"))

# Paso 1: vista previa (no cambia nada todavía)
cambios = []
for i, viejo in enumerate(archivos, start=1):
    nuevo = CARPETA / f"{PREFIJO}-{i:03d}{EXTENSION}"
    cambios.append((viejo, nuevo))
    print(f"{viejo.name}{nuevo.name}")

# Paso 2: confirmar antes de ejecutar
respuesta = input(f"\n¿Renombrar {len(cambios)} archivos? (s/n): ")
if respuesta.lower() == "s":
    for viejo, nuevo in cambios:
        viejo.rename(nuevo)
    print("Listo.")
else:
    print("Cancelado. No se tocó nada.")

Las partes que importan

El {i:03d} formatea el número con ceros a la izquierda: 001, 002, 010. Sin eso, tus archivos se ordenarían mal (el 10 iría antes que el 2).

El sorted() sobre el glob garantiza que la numeración siga el orden de los nombres originales, no el orden aleatorio en que el sistema devuelve los archivos.

Y el input() de confirmación es lo que convierte un script peligroso en uno seguro: ves exactamente qué va a pasar antes de que pase.

Un cuidado extra

Si el patrón nuevo pudiera coincidir con un nombre que ya existe, rename lo sobrescribe sin avisar. Para lotes delicados, conviene renombrar primero a nombres temporales y luego a los definitivos, o comprobar con nuevo.exists() antes de cada cambio. Para el caso típico de fotos con nombres distintos, el script de arriba es suficiente.

← Más de Automatizar