Подтвердить что ты не робот

Разрешение запрещено записывать в мой временный файл

Я пытаюсь создать и записать во временный файл в ОС 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
4b9b3361

Ответ 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

С уважением, Видеш