Quiero cambiar a.txta b.kml.
                    
                        python
                                file-rename
                                
                    
                    
                        zjm1126
fuente
                
                
            fuente

C:/folder/file.txten Windows o/home/file.txten Linux / MacOS).OSErroren los sistemas Windows.os.path.existsdebe usarse para verificar si el objetivo existe antes de renombrarlo. Esto crea un error de "Tiempo de verificación a tiempo de uso", pero es poco probable que cause problemas. (No conozco una manera fácil de evitar esto - ver aquí .os.replaceEl archivo puede estar dentro de un directorio, en ese caso, especifique la ruta:
fuente
Esto funcionará para cambiar el nombre o mover un archivo.
fuente
shutil.moveNo es una buena opción por no ser una operación atómica. Si el archivo está abierto, por ejemplo,shutil.movecreará un archivo connew_name, pero no lo eliminará y,old_namepor lo tanto, le dejará dos archivos.os.renamepor otro lado no hará nada, lo cual es una mejor opción . Conshutil.move, incluso si detecta el error, aún tendrá que preocuparse por verificar y eliminar el archivo falso. Simplemente no vale la pena cuando existe una mejor herramienta:os.rename.A partir de Python 3.4 se puede usar el módulo pathlib para resolver esto.
Si tiene una versión anterior, puede usar la versión con respaldo que se encuentra aquí
Supongamos que no está en la ruta raíz (solo para agregarle un poco de dificultad) a la que desea cambiar el nombre, y tiene que proporcionar una ruta completa, podemos ver esto:
Entonces, puedes tomar tu camino y crear un
Pathobjeto a partir de él:Solo para proporcionar 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 de archivo de
the_fileathe_file_1, entonces podemos obtener la parte del nombre de archivo:Y todavía sostenga la extensión en la mano también:
Podemos realizar nuestra modificación con una simple manipulación de cadenas:
¡Python 3.6 y superior hacen uso de cadenas f!
De otra manera:
Y ahora podemos realizar nuestro cambio de nombre llamando al
renamemétodo en el objeto de ruta que creamos y agregando elextpara completar la estructura de cambio de nombre que queremos:Más brevemente para mostrar su simplicidad:
Python 3.6+:
Las versiones inferiores a Python 3.6 utilizan el método de formato de cadena en su lugar:
fuente
pathlibbiblioteca se presenta en python 3.4, por lo que compartir la respuesta aquí también proporciona exposición para un módulo sólido que muestre su versatilidad y uso para requisitos más complicados.{}son para el formato de cadenas, que puedes leer aquí . En última instancia, lo que está sucediendo es que{}se reemplazan con las variables que se pasan alformatmétodo. Entonces, el primero{}contendrá lo que está adentroname_without_extension, y el segundo contendrá el segundo argumento, que es simplemente1.os.rename(old, new)Esto se encuentra en los documentos de Python: http://docs.python.org/library/os.html
fuente
Uso
os.rename. Pero debe pasar la ruta completa de ambos archivos a la función. Si tengo un archivoa.txten mi escritorio, lo haré y también tengo que dar el archivo lleno de nombre.fuente
fuente
chdir()a un directorio, por ejemplo, ¿qué sucede en Windows cuando se trata de un UNC? Y hacer unchdir()tiene efectos secundarios. Prefiero simplemente especificar las rutas necesarias paraos.rename()directamente, nochdir()ing.Puede usar os.system para invocar el terminal para realizar la tarea:
fuente
mves un programa de línea de comandos incorporado de Unix para mover / renombrar un archivo.fuente
os.pathcon modernopathlibes bastante dudoso. Ir todo el camino con en supathliblugar.Esto debería hacerlo. python 3+
fuente