Python tempfile with a context manager on Windows 10 leads to PermissionError: [Errno 13]

Python tempfile with a context manager on Windows 10 leads to PermissionError: [Errno 13]

OS: 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'

更改临时目录 C:\TEMP\ 的 Windows 权限状态以允许所有用户完全访问没有帮助。

Per this post 我尝试 运行 我的 Windows cmd 作为管理员,仍然没有用。

在搜索类似问题 (link) 时,我发现(并测试了)也适用于您的问题的解决方案。

您只需在 fp = tempfile.TemporaryFile() 行中添加一个 delete=False 参数。

似乎该文件实际上是在该行中创建的,然后尝试打开它并再次写入 (with open(fp.name)...) 禁止您这样做。