Вопрос по io, python, file – Python - IOError: [Errno 13] В доступе отказано:

44

Я получаюIOError: [Errno 13] Permission denied и я не знаю, что не так с этим кодом.

Я пытаюсь прочитать файл с заданным абсолютным путем (имеется в виду толькоfile.asm),

и относительный путь (значение/.../file.asm), и я хочу, чтобы программа записала файл по указанному пути - если он абсолютный, он должен записать его в текущий каталог; в противном случае к указанному пути.

код:

<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
</code>

ошибка дана:

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

способ выполнения кода:

<code>python assembler.py Users/***/Desktop/University/Add.asm 
</code>

Что я здесь не так делаю?

скорее всего, у вас нет прав доступа для записи в корневой каталог - и это правильно Ingo

Ваш Ответ

8   ответов
5

когда я использовал «shutil.copyfile» вместо "shutil.copy". Разрешения были перепутаны.

0

with openПроверьте это один раз.

16

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

Однако вы, похоже, перепутали индексы массива. Попробуйте следующее:

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

Обратите внимание на использование-4 вместо просто4 во второй строке кода. Это объясняет, почему ваша программа пытается создать/Use.hack, какойfirst четыре символа вашего имени файла (/Use), с.hack добавлен к нему.

Error: User Rate Limit Exceeded Itzik984
Error: User Rate Limit ExceededUser/...Error: User Rate Limit Exceeded/User/...Error: User Rate Limit Exceededsubdirectory of the current directoryError: User Rate Limit ExceededUser.
-2

output = open(newFile, 'w')

чтобы:

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

он должен сохранить ваш файл в локальном каталоге.

Error: User Rate Limit Exceeded Itzik984
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded"w"Error: User Rate Limit ExceededwillError: User Rate Limit Exceeded
Error: User Rate Limit ExceededsomewhereError: User Rate Limit Exceeded
Error: User Rate Limit Exceeded Itzik984
-1

Для меня это была проблема с разрешениями.

Используйте «Возьми на себя ответственность»; приложение в этой конкретной папке. Однако иногда кажется, что это работает только временно и не является постоянным решением.

0

я решил свою проблему с этим обходным путем. Просто убедитесь, что вы добавили SYSTEM в папку каталога. Я надеюсь, что это поможет 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))
27

Just Close the opened file where you are going to write.

Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
9

У вас недостаточно прав для записи в корневой каталог. Видите косую черту в имени файла?

Error: User Rate Limit Exceeded Itzik984
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded Itzik984

Похожие вопросы