Sólo estoy tratando de escribir una pequeña aplicación que toma un valor de un archivo con el nombre ‘de DATOS.DAT » y cambia el nombre de la carpeta que contiene el archivo con ese valor.

El .py secuencia de comandos se ejecuta en otra carpeta y permite al usuario definir la ruta de acceso. Para darle una mejor idea, la ruta definida por el usuario debe ser como (en un mac) ‘/Users/Usuario/Escritorio/CARPETA’ y ‘CARPETA’ debe contener DATOS.DAT».

Que es como una pequeña parte de el código fuente se ve como:

try:
    data = open('DATA.DAT').read()

    data_data = data[12:17]
    path_paths = path.rsplit('/')
    basepath = '/'.join(path_paths[:-1])
    chdir(basepath)

    if path_paths[-1] <> data_data:
        rename(path_paths[-1], data_data)
        raw_input('Folder name has been corrected! Thank you.')
        quit()
    else:
        print('Folder name was already correct! Thank you.')
        quit()
except IndexError:
    raw_input('ERROR!')
    quit()

Bien, funciona, pero es subir y a excepción de cuando ‘CARPETA’ contiene más de un archivo (en realidad, ‘CARPETA’ debe contener DATOS.DAT » y otras carpetas. Que no da problemas.)…

Traceback (most recent call last):
  File "/Users/User/Desktop/example.py", line 72, in <module>
    rename(path_paths[-1], data_data)
OSError: [Errno 66] Directory not empty

Sólo para evitar que esto suceda, hay una manera de solucionarlo? Gracias.

¿Qué sucede cuando usted chdir() fuera del directorio antes de cambiar el nombre? ¿Qué plataforma es esto?

OriginalEl autor PyGuy | 2011-09-20

2 Comentarios

  1. 14

    Edición: La herramienta adecuada es shutil.mover:

    shutil.move(path_paths[-1], data_data)

    suponiendo path_paths[-1] es la absoluta del directorio que desea cambiar el nombre, y data_data es la absoluta nombre del directorio que desea cambiar el nombre.

    El directorio de destino no debe existir ya para que esto funcione. Los dos lugares no necesitan estar en el mismo sistema de archivos.


    Viejo respuesta: el Uso de os.cambia el nombre de en lugar de os.rename.

    Va a crear de forma recursiva necesario directorios.

    He probado, pero me da exactamente el mismo error: Traceback (la mayoría de llamada reciente last): File «/Users/User/Desktop/example.py», línea 72, en <módulo> cambia el nombre(path_paths[-1], data_data) File «/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/os.py», la línea de 199, en cambia el nombre a cambiar el nombre(viejo, nuevo) OSError: [Errno 66] Directorio no está vacío
    Editado mi respuesta.
    Gracias, ahora funciona! Aquí un ejemplo: path_paths[-1] = ‘/Users/Usuario/Desktop/lol’ data_data = ‘/Users/Usuario/Desktop/asd’ …estoy en lo cierto?
    que se ve bien para mí, mientras el asd directorio no existe ya.

    OriginalEl autor agf

Dejar respuesta

Please enter your comment!
Please enter your name here