create python python-2.7 file-io create-directory

python - create - Intentar usar abrir(nombre de archivo, ''w'') le da a IOError:[Errno 2] No existe tal archivo o directorio si el directorio no existe



python move file (3)

Alternativamente, puedes verificar si el archivo existe antes de abrirlo con:

os.path.exists (afile)

Que dirá Verdadero o Falso, dependiendo de si existe.

Estoy tratando de crear y escribir en un archivo de texto usando Python. He buscado y no puedo encontrar una solución / razón para este error.

Aquí está el código que no funciona:

afile = ''D://temp//test.txt'' outFile = open(afile, ''w'' ) outFile.write(''Test.'') outFile.close() # Error: 2 # Traceback (most recent call last): # File "<maya console>", line 1, in <module> # IOError: [Errno 2] No such file or directory: ''D://temp//test.txt'' #

La mayoría de las respuestas que encontré están relacionadas con las barras en el camino, así que ...

I tried ''D:/temp/test.txt'' and got an error. I tried r''D:/temp/test.txt'' and got an error.

Cuando intento crear un archivo en la raíz de D: / tengo éxito.

''D:/test.txt'' works. ''D://test.txt'' works. r''D:/test.txt'' works.

Parece que no puedo crear la ruta del directorio que me gustaría al intentar crear el archivo . ¿Cuál es el método correcto para crear archivos en una ruta específica con Python en Windows (7)? ¿Estoy mal entendiendo lo que puede hacer open ()? ¿Crea directorios si no existen o necesito crear explícitamente la ruta del directorio antes de usar open () en el modo ''escribir'' para crear un archivo?


Si intenta crear un archivo en un directorio que no existe, obtendrá ese error.

Es necesario asegurarse de que el directorio existe primero. Puedes hacer eso con os.makedirs() según esta respuesta .


Usted tiene razón al suponer que el directorio principal del archivo debe existir para que el proceso de open exitoso. La forma simple de lidiar con esto es hacer una llamada a os.makedirs .

De la os.makedirs :

os.makedirs (ruta [, modo])

Función recursiva de creación de directorios. Como mkdir() , pero hace que todos los directorios de nivel intermedio sean necesarios para contener el directorio de hoja.

Entonces tu código podría ejecutar algo como esto:

filename = ... dirname = os.path.dirname(filename) if not os.path.exists(dirname): os.makedirs(dirname) with open(filename, ''w''): ...