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.
También te puede interesar
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ón | Si el destino existe | Entre discos |
|---|---|---|
Path.rename / os.rename | depende del sistema | no |
Path.replace / os.replace | lo pisa siempre | no |
shutil.move | puede pisarlo, según el sistema | sí |
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.