Python - IOError: [Errno 13] Разрешение отклонено:
Я получаю IOError: [Errno 13] Permission denied
, и я не знаю, что не так с этим кодом.
Я пытаюсь прочитать файл с абсолютным путем (это означает только file.asm
),
и относительный путь (что означает /.../file.asm
), и я хочу, чтобы программа записывала файл в любой путь - если он является абсолютным, он должен записывать его в текущий каталог; в противном случае к указанному пути.
код:
#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
приведенная погрешность:
IOError: [Errno 13] Permission denied: '/Use.hack'
способ выполнения кода:
python assembler.py Users/***/Desktop/University/Add.asm
Что я здесь делаю неправильно?
Ответы
Ответ 1
Похоже, вы пытаетесь заменить расширение следующим кодом:
if (myFile[-4:] == ".asm"):
newFile = myFile[:4]+".hack"
Однако, похоже, вы перепутали индексы массива. Попробуйте следующее:
if (myFile[-4:] == ".asm"):
newFile = myFile[:-4]+".hack"
Обратите внимание на использование -4
вместо просто 4
во второй строке кода. Это объясняет, почему ваша программа пытается создать /Use.hack
, который является первыми четырьмя символами вашего имени файла (/Use
), приложенным к нему .hack
.
Ответ 2
Просто закройте открытый файл, в который вы собираетесь писать.
Ответ 3
У вас недостаточно прав для записи в корневой каталог. См. Ведущую косую черту в имени файла?
Ответ 4
Это случилось со мной, когда я использовал "shutil.copyfile" вместо "shutil.copy". Разрешения были испорчены.
Ответ 5
Может быть, вы пытаетесь открыть папку with open
, проверьте это один раз.
Ответ 6
У меня ничего сверху не сработало. Таким образом, я решил свою проблему с этим обходным путем. Просто убедитесь, что вы добавили 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))
Ответ 7
У меня была такая же проблема. В моем случае у пользователя не было разрешения на запись в каталог назначения. В моем случае помогла следующая команда:
chmod 777 University
Ответ 8
Для меня это проблема с разрешениями.
Используйте приложение "Take Ownership" в этой конкретной папке.
Однако иногда это работает только временно и не является постоянным решением.
Ответ 9
Конечно, вы можете. Попробуйте изменить эту строку:
output = open(newFile, 'w')
в
output = open("./%s" % (newFile), 'w')
он должен сохранить ваш файл в локальном каталоге.