Временный файл Python с менеджером контекста в Windows 10 приводит к PermissionError: [Errno 13]

ОС: Windows 10

Python: 3.6 (Анаконда)

Я пытаюсь использовать простой временный файл с менеджером контекста, чтобы написать простой CSV.

import csv
import tempfile

fp = tempfile.TemporaryFile()
with open(fp.name,'w',newline='') as f:
    csv_out = csv.writer(f)
    csv_out.writerow(['first_name','last_name'])
    csv_out.writerow(['foo','bar'])

Выполнение этого приводит к этой ошибке разрешения:

with open(fp.name,'w',newline='') as f:
E       PermissionError: [Errno 13] Permission denied: 'C:\\TEMP\\tmp2bqke7f6'

Изменение статуса разрешения Windows для временного каталога C:\TEMP\, чтобы разрешить полный доступ всем пользователям, не помогает.

В соответствии с этим сообщением я пытался запустить Windows cmd от имени администратора, но все равно не работал.


person Cale Sweeney    schedule 09.03.2019    source источник


Ответы (1)


В поисках похожей проблемы (ссылка) я нашел ( и проверено) решение, которое работает и для вашей проблемы.

Вам просто нужно добавить аргумент delete=False в строку fp = tempfile.TemporaryFile().

Кажется, что файл действительно создается в этой строке, а затем попытка открыть его и записать в него второй раз (with open(fp.name)...) запрещает вам это делать.

person Dositej    schedule 09.03.2019
comment
Странно это работает. Похоже, это связано с этой ошибкой: github.com/bravoserver/bravo/issues/111 - person Cale Sweeney; 09.03.2019