write variable read print open create python file-io

variable - python readline



abrir archivo en el modo "w": IOError:[Errno 2] No existe dicho archivo o directorio (6)

Cuando intento abrir un archivo en modo de escritura con el siguiente código:

packetFile = open("%s/%s/%s/%s.mol2" % ("dir", "dir2", "dir3", "some_file"), "w")

Me da el siguiente error:

IOError: [Errno 2] No such file or directory: ''dir/dir2/dir3/some_file.mol2''

El modo "w" debería crear el archivo si no existe, ¿verdad? Entonces, ¿cómo puede ocurrir este error?


Como no tiene una barra inclinada "inicial", su secuencia de comandos python está buscando este archivo en relación con el directorio de trabajo actual (y no con la raíz del sistema de archivos). ¡También tenga en cuenta que los directorios que conducen al archivo deben existir!

Y: use os.path.join para combinar elementos de una ruta.

por ejemplo: os.path.join("dir", "dir2", "dir3", "myfile.ext")


Compruebe que la secuencia de comandos tenga permisos de escritura en ese directorio. Prueba esto:

chmod a+w dir/dir2/dir3

Tenga en cuenta que esto le dará permisos de escritura a todos en ese directorio.


Este error también ocurrirá si está intentando sobreescribir un enlace suave roto en un archivo con el mismo nombre. En ese caso, elimine el enlace suave roto y podrá escribir el nuevo archivo.


Problema similar ocurrió en el entorno de Windows. La solución fue agregar "C:" a la ruta absoluta. Mi objetivo era guardar algunos archivos en el escritorio del usuario

file_path = os.path.join(os.environ["HOMEPATH"], os.path.join("Desktop", "log_file.log_%s_%s" %( strftime("%Y_%m_%d", localtime()), "number_1")))

entonces estaba tratando de abrir este directorio para guardar, como

file_ref = open(file_path, "w")

Agregué esto para correr

file_ref = open(("C://"+file_path), "w")


Tuve el mismo error, pero en mi caso la causa fue, en Windows, una ruta de más de ~ 250 caracteres.


Verá este error si el directorio que contiene el archivo que está intentando abrir no existe, incluso cuando intente abrir el archivo en el modo "w".

Ya que está abriendo el archivo con una ruta relativa, es posible que esté confundido sobre exactamente qué es ese directorio. Intente poner una impresión rápida para verificar:

import os curpath = os.path.abspath(os.curdir) packet_file = "%s/%s/%s/%s.mol2" % ("dir", "dir2", "dir3", "some_file") print "Current path is: %s" % (curpath) print "Trying to open: %s" % (os.path.join(curpath, packet_file)) packetFile = open(packet_file, "w")