Cómo cambiar el nombre de un archivo usando Python
Quiero cambiar a.txt
a b.kml
.
Usar os.rename
:
import os
os.rename('a.txt', 'b.kml')
Uso:
os.rename('from.extension.whatever','to.another.extension')
El archivo puede estar dentro de un directorio, en ese caso especifique la ruta:
import os
old_file = os.path.join("directory", "a.txt")
new_file = os.path.join("directory", "b.kml")
os.rename(old_file, new_file)
A partir de Python 3.4 se puede utilizar el módulo pathlib para solucionar este problema.
Si tiene una versión anterior, puede usar la versión respaldada que se encuentra aquí
Supongamos que no está en la ruta raíz (solo para agregarle un poco de dificultad) y desea cambiarle el nombre, y debe proporcionar una ruta completa. Podemos ver esto:
some_path = 'a/b/c/the_file.extension'
Entonces, puedes tomar tu camino y crear un Path
objeto a partir de él:
from pathlib import Path
p = Path(some_path)
Solo para proporcionar información sobre este objeto que tenemos ahora, podemos extraer cosas de él. Por ejemplo, si por alguna razón queremos cambiar el nombre del archivo modificando el nombre del archivo de the_file
a the_file_1
, entonces podemos obtener la parte del nombre del archivo:
name_without_extension = p.stem
Y todavía sostenga la extensión en la mano también:
ext = p.suffix
Podemos realizar nuestra modificación con una simple manipulación de cadenas:
¡Python 3.6 y versiones posteriores utilizan cadenas f!
new_file_name = f"{name_without_extension}_1"
De lo contrario:
new_file_name = "{}_{}".format(name_without_extension, 1)
Y ahora podemos realizar nuestro cambio de nombre llamando al rename
método en el objeto de ruta que creamos y agregando ext
para completar la estructura de cambio de nombre adecuada que queremos:
p.rename(Path(p.parent, new_file_name + ext))
Más brevemente para mostrar su simplicidad:
Pitón 3.6+:
from pathlib import Path
p = Path(some_path)
p.rename(Path(p.parent, f"{p.stem}_1_{p.suffix}"))
Las versiones anteriores a Python 3.6 utilizan en su lugar el método de formato de cadena:
from pathlib import Path
p = Path(some_path)
p.rename(Path(p.parent, "{}_{}_{}".format(p.stem, 1, p.suffix))
import shutil
shutil.move('a.txt', 'b.kml')
Esto funcionará para cambiar el nombre o mover un archivo.
os.rename(old, new)
Esto se encuentra en los documentos de Python: http://docs.python.org/library/os.html