permissionerror permission open python file io

python - open - permissionerror errno 13 permission denied



Python-IOError:[Errno 13] Permiso denegado: (8)

Esto me sucedió cuando estaba usando ''shutil.copyfile'' en lugar de ''shutil.copy''. Los permisos estaban en mal estado.

Estoy recibiendo IOError: [Errno 13] Permission denied y no sé qué está mal con este código.

Estoy tratando de leer un archivo dado una ruta absoluta (es decir, solo file.asm ),

y una ruta relativa (que significa /.../file.asm ), y quiero que el programa escriba el archivo en la ruta que se proporcione; si es absoluta, debería escribirla en el directorio actual; De lo contrario, al camino dado.

el código:

#call to main function if __name__ == ''__main__'': assem(sys.argv[1]) import sys def assem(myFile): from myParser import Parser import code from symbolTable import SymbolTable table=SymbolTable() # max size of each word WORD_SIZE = 16 # rom address to save to rom_addrs = 0 # variable address to save to var_addrs = 16 # new addition if (myFile[-4:] == ".asm"): newFile = myFile[:4]+".hack" output = open(newFile, ''w'') <==== ERROR

el error dado:

IOError: [Errno 13] Permission denied: ''/Use.hack''

la forma en que ejecuto el codigo

python assembler.py Users/***/Desktop/University/Add.asm

¿Qué estoy haciendo mal aquí?


No tiene permisos suficientes para escribir en el directorio raíz. Ver la barra diagonal principal en el nombre de archivo?


Para mí nada de lo de arriba funcionó. Así que resolví mi problema con esta solución. Simplemente compruebe que ha agregado SISTEMA en la carpeta del directorio. Espero que te sirva de ayuda.

import os # create file @staticmethod def create_file(path): if not os.path.exists(path): os.system(''echo # > {}''.format(path)) # append lines to the file split_text = text_file.split(''/n'') for st in split_text: os.system(''echo {} >> {}''.format(st,path))


Para mí, esto fue un problema de permisos.

Use la aplicación ''Take Ownership'' en esa carpeta específica. Sin embargo, esto a veces parece funcionar solo temporalmente y no es una solución permanente.


Parece que estás intentando reemplazar la extensión con el siguiente código:

if (myFile[-4:] == ".asm"): newFile = myFile[:4]+".hack"

Sin embargo, parece que tienes los índices de matriz mezclados. Intenta lo siguiente:

if (myFile[-4:] == ".asm"): newFile = myFile[:-4]+".hack"

Tenga en cuenta el uso de -4 lugar de solo 4 en la segunda línea de código. Esto explica por qué su programa está intentando crear /Use.hack , que son los primeros cuatro caracteres de su nombre de archivo ( /Use ), con .hack añadido a él.


Por supuesto que puede. Intenta cambiar esta línea:

output = open(newFile, ''w'')

a:

output = open("./%s" % (newFile), ''w'')

debe guardar su archivo en el directorio local.


Tal vez usted está intentando abrir la carpeta with open , verifíquelo una vez.


Solo cierra el archivo abierto donde vas a escribir.