Python-IOError: [Errno 13] Permission refusée:
je suis IOError: [Errno 13] Permission denied
et je ne sais pas ce qui ne va pas avec ce code.
j'essaie de lire un fichier auquel on a donné un chemin absolu (ce qui signifie seulement file.asm
),
et un chemin relatif (signifiant /.../file.asm
), et je veux que le programme écrive le fichier à n'importe quel chemin donné - s'il est absolu, il devrait l'écrire au dir courant; autrement, au chemin donné.
le code:
#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
l'erreur donnée:
IOError: [Errno 13] Permission denied: '/Use.hack'
la façon dont j'exécute le code :
python assembler.py Users/***/Desktop/University/Add.asm
Ce que je fais mal?
8 réponses
on dirait que vous essayez de remplacer l'extension par le code suivant:
if (myFile[-4:] == ".asm"):
newFile = myFile[:4]+".hack"
cependant, vous semblez confondre les index des tableaux. Essayez ce qui suit:
if (myFile[-4:] == ".asm"):
newFile = myFile[:-4]+".hack"
notez l'utilisation de -4
au lieu de 4
dans la deuxième ligne de code. Cela explique pourquoi votre programme essaie de créer /Use.hack
premier quatre caractères de votre nom de fichier (/Use
),.hack
ajouté à la fin.
Vous n'avez pas les autorisations suffisantes pour écrire dans le répertoire racine. Vous voyez la barre oblique sur le nom du fichier?
cela m'est arrivé quand j'utilisais 'shutil.copyfile "au lieu de" shutil.copie". Les autorisations étaient erronées.
Peut-être que Vous essayez d'ouvrir le dossier with open
, vérifier une fois.
pour moi, rien de ce qui vient d'en haut n'a fonctionné. Donc j'ai résolu mon problème avec ce contournement. Il suffit de vérifier que vous avez ajouté le système dans le dossier de répertoire. J'espère que ça aidera somoene.
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))
bien sûr, vous pouvez. Essayez de modifier cette ligne:
output = open(newFile, 'w')
à:
output = open("./%s" % (newFile), 'w')
il devrait sauvegarder votre fichier dans le répertoire local.
Pour moi, c'était un problème d'autorisations.
utilisez l'application' Take Ownership ' sur ce dossier spécifique. Toutefois, cela semble parfois ne fonctionner que temporairement et n'est pas une solution permanente.