无法访问使用tempfile创建的临时文件

Rnh*_*joj 4 python windows

tempfile.NamedTemporaryFile()用来存储一些文本,直到程序结束。在Unix上可以正常使用,但是在Windows上无法读取或写入返回的文件:python提供Errno13。唯一的方法是使用设置delete=False和手动删除文件os.remove()。为什么?

Pio*_*ost 5

这将导致IOError,因为文件创建后只能打开一次。

原因是因为在Windows上NamedTemporaryFile创建带有FILE_SHARE_DELETE标志的文件。在Windows上,当使用特定共享标记创建/打开文件时,所有后续打开操作都必须通过此共享标记。open不传递FILE_SHARE_DELETE标志的Python 函数不是这种情况。请参阅我关于如何创建可由子进程读取的临时文件的答案有关更多详细信息和解决方法的问题。