Python 创建文件后,能否更改NamedTemporaryFile的删除标志?
创建NamedTemporaryFile后,如何更改该文件的删除标志Python 创建文件后,能否更改NamedTemporaryFile的删除标志?,python,temporary-files,Python,Temporary Files,创建NamedTemporaryFile后,如何更改该文件的删除标志 为什么??虽然大多数时候我不需要保留临时文件,但如果我从代码中检测到错误,我希望保留它们以便能够对其进行分析。根据源代码,delete只是存储为NamedTemporaryFile返回的对象的一个属性,因此,您可以在关闭它之前修改任意多的内容 f = NamedTemporaryFile() # stuff f.delete = False f.close() 编辑:这对于Python2是正确的;对于Python3,请参见
为什么??虽然大多数时候我不需要保留临时文件,但如果我从代码中检测到错误,我希望保留它们以便能够对其进行分析。根据源代码,delete只是存储为
NamedTemporaryFile
返回的对象的一个属性,因此,您可以在关闭它之前修改任意多的内容
f = NamedTemporaryFile()
# stuff
f.delete = False
f.close()
编辑:这对于Python2是正确的;对于Python3,请参见Augusto Men的答案。对于现在搜索这个问题的任何人,至少对于Python3+,在实例化
NamedTemporaryFile
后更改delete
不会更改其初始行为,因为实际的标志存储在名为\u closer
的对象中(这是一个\u TemporaryFileCloser
实例)。请参阅Python中的tempfile.py
,因为该实例中没有提到任何内容
因此,您可以更改此未记录的属性:
f = tempfile.NamedTemporaryFile(delete=True)
# f.delete = False # This doesn't change anything
f._closer.delete = False # undocumented
f.close() # the file won't be deleted
或者您总是使用
NamedTemporaryFile(delete=False)
创建文件,然后如果不再需要该文件,则手动删除该文件。您尝试过吗?这似乎对我有用。