Estoy tratando de cambiar el nombre de varios archivos en un directorio mediante esta secuencia de comandos de Python:

import os
path = '/Users/myName/Desktop/directory'
files = os.listdir(path)
i = 1

for file in files:
    os.rename(file, str(i)+'.jpg')
    i = i+1

Al ejecutar este script, me sale el siguiente error:

Traceback (most recent call last):
  File "rename.py", line 7, in <module>
    os.rename(file, str(i)+'.jpg')
OSError: [Errno 2] No such file or directory

¿Por qué? ¿Cómo puedo solucionar este problema?

Gracias.

Usted tiene que especificar la ruta completa.
Su files lista contendrá todos los archivos en path, pero al hacerlo os.rename(), busca un archivo en el directorio de trabajo actual.
os.listdir() devuelve sólo los nombres de archivo y no la ruta de acceso completa del archivo. Uso os.path.join(path, file) para obtener la ruta de acceso completa y el nombre.

OriginalEl autor Simplicity | 2016-05-26

4 Comentarios

  1. 44

    Usted no está dando toda la ruta, mientras que el cambio de nombre, ¿ como esta:

    import os
    path = '/Users/myName/Desktop/directory'
    files = os.listdir(path)
    i = 1
    
    for file in files:
        os.rename(os.path.join(path, file), os.path.join(path, str(i)+'.jpg'))
        i = i+1

    Editar: Gracias a tavo, La primera solución podría mover el archivo en el directorio actual, fijo que.

    Tenga en cuenta, que esto también va a mover el archivo al directorio actual. Para evitar eso, ¿os.rename(os.path.join(path, file), os.path.join(path, str(i)+'.jpg')) lugar.

    OriginalEl autor noteness

  2. 3

    Usted tiene que tomar este camino como un directorio de trabajo actual en primer lugar.
    bastante simple.
    resto del código no tiene errores.

    para hacerlo directorio de trabajo actual:

    os.chdir(path)

    OriginalEl autor Abid413119

  3. 1

    Como por @daniel comentario, os.listdir() devuelve sólo los nombres de archivo y no la ruta de acceso completa del archivo. Utilizar os.ruta de acceso.join(ruta del archivo) para obtener la ruta de acceso completa y el nombre.

    import os
    path = 'C:\Users\Admin\Desktop\Jayesh'
    files = os.listdir(path)
    for file in files:
       os.rename(os.path.join(path, file), os.path.join(path, 'xyz_' + file + '.csv'))
    Sírvanse proporcionar detalles sobre cómo esta mejor resuelve esta cuestión y cómo se expande en las respuestas anteriores.

    OriginalEl autor jayesh

  4. 0

    Puede copiar este script y lo coloca en la carpeta de la que desea cambiar el nombre de archivos.
    https://gist.github.com/aljgom/81e8e4ca9584b481523271b8725448b8

    Se cambia el nombre de archivos en el directorio actual por la que pasa funciones. Primero determina los cambios que se realizarán y muestra las diferencias en el uso de los colores, y le pide una confirmación para realizar los cambios. Trabaja en pycharm, no lo he probado en diferentes consolas

    OriginalEl autor aljgom

Dejar respuesta

Please enter your comment!
Please enter your name here