Разрешение запрещено записывать в мой временный файл
Я пытаюсь создать и записать во временный файл в ОС Windows с помощью Python. Я использовал модуль Python tempfile
для создания временного файла.
Но когда я иду писать этот временный файл, я получаю сообщение об ошибке Permission Denied
. Мне не разрешено писать во временные файлы?! Я делаю что-то неправильно? Если я хочу создать и записать во временный файл, как я должен это делать в Python? Я хочу создать временный файл в каталоге temp для целей безопасности, а не локально (в исполняемом файле .exe).
IOError: [Errno 13] Permission denied: 'c:\\users\\blah~1\\appdata\\local\\temp\\tmpiwz8qw'
temp = tempfile.NamedTemporaryFile().name
f = open(temp, 'w') # error occurs on this line
Ответы
Ответ 1
NamedTemporaryFile
фактически создает файл для вас, вам не нужно открывать его для записи.
Фактически, Документы Python:
Можно ли использовать это имя для открытия файла во второй раз, пока именованный временный файл все еще открыт, он варьируется в разных платформах (его можно использовать в Unix; он не может быть в Windows NT или более поздней версии).
Вот почему вы получаете свою ошибку разрешения. Вероятно, вы после этого:
f = tempfile.NamedTemporaryFile(mode='w') # open file
temp = f.name # get name (if needed)
Ответ 2
Используйте параметр delete, как показано ниже:
tmpf = NamedTemporaryFile(delete=False)
Но тогда вам нужно вручную удалить временный файл, как только вы закончите с ним.
tmpf.close()
os.unlink(tmpf.name)
Ссылка на ошибку: https://github.com/bravoserver/bravo/issues/111
С уважением, Видеш