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.