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?

42
demandé sur Jerzyk 2012-05-14 02:29:48

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.hackpremier quatre caractères de votre nom de fichier (/Use),.hack ajouté à la fin.

15
répondu Greg Hewgill 2012-05-13 23:00:10

il suffit de Fermer le fichier ouvert, où vous allez écrire.

26
répondu vicky 2014-03-12 11:20:19

Vous n'avez pas les autorisations suffisantes pour écrire dans le répertoire racine. Vous voyez la barre oblique sur le nom du fichier?

9
répondu James Youngman 2012-05-13 22:33:03

cela m'est arrivé quand j'utilisais 'shutil.copyfile "au lieu de" shutil.copie". Les autorisations étaient erronées.

4
répondu Jason 2014-12-03 21:34:37

Peut-être que Vous essayez d'ouvrir le dossier with open, vérifier une fois.

0
répondu Mohan Babu 2018-05-14 08:59:31

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))
0
répondu PythonMan 2018-09-17 11:20:32

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.

-1
répondu kkszysiu 2012-05-13 22:40:09

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.

-1
répondu swyveu 2015-03-10 12:41:05