Quiero cambiar a.txt
a b.kml
.Cómo cambiar el nombre de un archivo usando Python
Respuesta
Uso os.rename
:
os.rename('a.txt', 'b.kml')
import shutil
shutil.move('a.txt', 'b.kml')
Esto funcionará para cambiar el nombre o mover un archivo.
'shutil.move' no es un buen opción debido a no ser una operación atómica. Si el archivo está abierto, por ejemplo, 'shutil.move' creará un archivo con' new_name', pero no eliminará el archivo con 'old_name', dejándolo con dos archivos. 'os.rename' por el contrario no hará nada, que es una * mejor opción *. Con 'shutil.move', incluso si descubriera el error, aún tendría que preocuparse por comprobar y eliminar el archivo fraudulento. Simplemente no vale la pena cuando ** existe una herramienta mejor: 'os.rename' **. – mvbentes
os.rename(old, new)
esto se encuentra en la documentación de Python: http://docs.python.org/library/os.html
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)
Puede usar os.system para invocar terminal para realizar la tarea:
os.system('mv oldfile newfile')
Solo en una máquina basada en Unix, ¿verdad? – LarsH
sí, esto funcionará solo en una máquina basada en Unix ya que 'mv' es un programa de línea de comandos incorporado de Unix para mover/cambiar el nombre de un archivo. –
¿Por qué invocaría un terminal y definiría un comando UNIX solamente cuando puede hacerlo desde python de una manera multiplataforma? – EndermanAPM
A partir de Python 3.4 se puede utilizar el módulo de pathlib para resolver esto.
Si quieres pasar a ser en una versión anterior, puede utilizar la versión portado encontró here
Vamos a suponer que usted no está en la ruta de raíz (sólo para añadir un poco de dificultad a ella) desea cambiar el nombre y tenemos que proporcionar una ruta completa, podemos ver esto:
some_path = 'a/b/c/the_file.extension'
por lo tanto, puede tomar su camino y crear un objeto Path
fuera de él:
from pathlib import Path
p = Path(some_path)
Solo para proporcionar algo de información sobre este objeto que tenemos ahora, podemos extraer cosas de él. Por ejemplo, si por cualquier razón queremos cambiar el nombre del archivo modificando el nombre del archivo de the_file
a the_file_1
, entonces podemos llegar a la parte de nombre de archivo:
name_without_extension = p.stem
Y todavía tienen la extensión en la mano, así:
ext = p.suffix
podemos realizar nuestra modificación con una simple manipulación de cadenas:
new_file_name = "{}_{}".format(name_without_extension, 1)
Y ahora podemos realizar nuestro cambio de nombre llamando el método rename
en el objeto de trazado que hemos creado y añadiendo el ext
para completar la estructura de cambio de nombre adecuado que queremos:
p.rename(Path(p.parent, new_file_name + ext))
En pocas palabras para mostrar su simplicidad:
from pathlib import Path
p = Path(some_path)
p.rename(Path(p.parent, "{}_{}".format(p.stem, 1) + p.ext))
¿Por qué harías esto en lugar de la respuesta aceptada? Parece mucho más complicado – rbennell
Bueno, @rbennell, la mayor parte de esta respuesta es una explicación. La respuesta es realmente solo las tres líneas al final. Además, la respuesta aceptada se hace explícitamente para ese mismo cambio de nombre. Esta respuesta proporciona una manera de mostrar cómo puede manipular el nombre de archivo para conservar las partes que desea en la ruta o el nombre del archivo. Además, la biblioteca 'pathlib' se introdujo en Python 3.4, por lo que compartir la respuesta aquí también proporciona exposición para un módulo sólido para mostrar su versatilidad y uso para requisitos más complicados. – idjaw
import shutil
import os
files = os.listdir("./pics/")
for key in range(0, len(files)):
print files[key]
shutil.move("./pics/" + files[key],"./pics/img" + str(key) + ".jpeg")
esto debería hacerlo . python 3+
Use os.rename
. Pero debe pasar la ruta completa de ambos archivos a la función. Si tengo un archivo a.txt
en mi escritorio, entonces lo haré y también tengo que dar el nombre completo del archivo renombrado.
os.rename ('C: \ Users \ Desktop \ a.txt', 'C: \ Users \ Desktop \ b.kml')
- 1. cómo cambiar el nombre de un archivo usando NSFileManager
- 2. ¿Cómo puedo cambiar el nombre de un archivo en ASP.NET?
- 3. android, ¿Cómo cambiar el nombre de un archivo?
- 4. ¿Cómo cambiar el nombre de un archivo en Ruby?
- 5. ¿Cómo cambiar un nombre de módulo de Python?
- 6. ¿Cambiar el nombre del archivo en Cocoa?
- 7. TimedRotatingFileHandler ¿Cambiar nombre de archivo?
- 8. Cambiar el nombre de un archivo sin utilizar renameTo() - Java
- 9. Cambiar el nombre de un archivo en el almacenamiento interno
- 10. Cambiar el nombre de un archivo a la papelera
- 11. ¿Deshabilitar cambiar el nombre de un archivo en JFileChooser?
- 12. Cambiar el nombre de un archivo con Java
- 13. Cambiar el nombre de un archivo cargado en CodeIgniter
- 14. ¿Cómo cambiar el nombre de un directorio?
- 15. ¿Cómo puedo cambiar el nombre de los archivos usando PowerShell?
- 16. eliminar y cambiar el nombre de un archivo en java
- 17. Cambiar el nombre de un archivo en NERDTREE
- 18. Cómo cambiar el nombre del archivo apk en android
- 19. ¿Cómo cambiar el nombre del archivo de configuración en ClickOnce?
- 20. cómo vaciar un archivo usando Python
- 21. Secuencia de comandos para cambiar el nombre de los archivos usando un hash sha1() de su nombre de archivo
- 22. Validar un nombre de archivo en python
- 23. Cambiar el nombre de la hormiga al copiar el archivo
- 24. cómo cambiar el nombre de tabcontrol
- 25. ¿Cómo obtener el nombre de archivo de logging.FileHandler en Python?
- 26. Python: ¿Cómo crear un nombre de archivo único?
- 27. Obtener el nombre del archivo usando xsl
- 28. ¿Cómo guardo un archivo usando el nombre de archivo del encabezado de respuesta con cURL
- 29. ¿Cómo cambiar el nombre de los hilos en un ExecutorService?
- 30. Cambiar el nombre del archivo war en sbt 11.2
No se olvide de "import os" – Vladtn
Debe tenerse en cuenta que si los archivos no están en el directorio de trabajo necesitará la ruta completa. – EndermanAPM