Windows 10 上带有上下文管理器的 Python 临时文件会导致 PermissionError:[Errno 13]

Cal*_*ney 5 temporary-files file-writing python-3.x windows-10

操作系统: 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'])
Run Code Online (Sandbox Code Playgroud)

运行此命令会导致此权限错误:

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

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

根据这篇文章,我尝试以管理员身份运行 Windows cmd,但仍然不起作用。

小智 4

在搜索类似的问题(链接)时,我找到(并测试了)一个也适用于您的问题的解决方案。

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

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