Python – Renombrar un archivo

Renombrar y mover son la misma operación: cambiar la ruta de un archivo. Lo que cambia entre las tres funciones que hay es qué hacen si el destino ya existe y si pueden cruzar de un disco a otro.

Renombrar

from pathlib import Path
base = Path("salida")

nuevo = (base / "copia1.txt").rename(base / "renombrado.txt")
print("rename devuelve:", nuevo, "| existe el viejo:", (base / "copia1.txt").exists())
salidarename devuelve: salida/renombrado.txt | existe el viejo: False

rename devuelve la ruta nueva, que viene bien para seguir trabajando con ella. Para mover a otra carpeta, pon otra carpeta en el destino; tiene que existir.

Si el destino ya existe: rename o replace

rename no se comporta igual en todos los sistemas. En Linux y macOS pisa el destino sin avisar; en Windows lanza FileExistsError. Si quieres que pise en todas partes, usa replace, que está hecho para eso. Y si lo que quieres es no pisar nunca, comprueba antes con exists().
(base / "renombrado.txt").replace(base / "copia2.txt")
salidareplace pisa el destino: Primera

Entre discos distintos: shutil.move

import shutil
shutil.move(base / "copia2.txt", base / "sub" / "movido.txt")
salidamove: ['movido.txt', 'notas.txt']

rename solo funciona dentro del mismo sistema de archivos: no puede pasar un archivo del disco interno a un USB o a una carpeta de red. shutil.move lo intenta con rename y, si no puede, copia y borra el original. Para mover algo de un sitio a otro sin pensar en dónde está cada cosa, es la más segura.

FunciónSi el destino existeEntre discos
Path.rename / os.renamedepende del sistemano
Path.replace / os.replacelo pisa siempreno
shutil.movepuede pisarlo, según el sistemasí

Más información en inglés: Rename a file in Python.

Todo el código se ejecutó con Python 3.14 en un contenedor limpio antes de publicar esta página; las salidas están copiadas de esa ejecución.