Python – IOError: [Errno 13] Toestemming geweigerd:

Ik krijg IOError: [Errno 13] Permission denieden ik weet niet wat er mis is met deze code.

Ik probeer een bestand te lezen met een absoluut pad (dat wil zeggen alleen file.asm),

en een relatief pad (wat betekent /.../file.asm), en ik wil dat het programma het bestand schrijft naar het opgegeven pad – als het absoluut is, zou het het moeten schrijven naar de huidige dir; anders naar het opgegeven pad.

de 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

de gegeven fout:

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

de manier waarop ik de code uitvoer:

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

Wat doe ik hier verkeerd?


Antwoord 1, autoriteit 100%

Het lijkt erop dat u de extensie probeert te vervangen door de volgende code:

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

U lijkt echter de array-indexen door elkaar te halen. Probeer het volgende:

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

Let op het gebruik van -4in plaats van alleen 4in de tweede regel code. Dit verklaart waarom uw programma /Use.hackprobeert aan te maken, de eerstevier tekens van uw bestandsnaam (/Use), met .hackeraan toegevoegd.


Antwoord 2, autoriteit 93%

Sluit gewoon het geopende bestand waar je gaat schrijven.


Antwoord 3, autoriteit 67%

Je hebt niet voldoende rechten om naar de hoofdmap te schrijven. Zie je de schuine streep voor de bestandsnaam?


Antwoord 4, autoriteit 39%

Dit overkwam mij toen ik ‘shutil.copyfile’ gebruikte in plaats van ‘shutil.copy’. De permissies waren in de war.


Antwoord 5, autoriteit 6%

Misschien probeert u de map with opente openen, controleer het een keer.


Antwoord 6, autoriteit 6%

Voor mij werkte niets van bovenaf. Dus ik heb mijn probleem opgelost met deze tijdelijke oplossing. Controleer gewoon of u SYSTEEM in de mapmap hebt toegevoegd. Ik hoop dat het iemand zal helpen.

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))

Antwoord 7, autoriteit 6%

Ik had hetzelfde probleem. In mijn geval had de gebruiker geen schrijfrechten voor de doelmap. Het volgende commando hielp in mijn geval:

chmod 777 University

Antwoord 8, autoriteit 6%

Controleer of je de code implementeert in een zou kunnen rijden zoals een box, dropbox enz. Als je de bestanden die je probeert te implementeren naar een lokale map op je computer kopieert, zou je de fout moeten kunnen verwijderen.

p>


Antwoord 9

Voor mij was dit een probleem met de rechten.

Gebruik de applicatie ‘Take Ownership’ voor die specifieke map.
Dit lijkt echter soms slechts tijdelijk te werken en is geen permanente oplossing.


Antwoord 10

Ter info: ik had deze toestemmingsfout omdat het bestand dat het probeerde te maken al was geopend/gebruikt door een ander programma (werd gemaakt de laatste keer dat het script werd uitgevoerd, ik had het geopend met Excel en kreeg toen een toestemmingsfout toen het probeerde het opnieuw te maken)

dit hier achterlaten voor het geval iemand anders het nuttig vindt, het is niet de echte oplossing voor de gestelde vraag

Other episodes