如何在创建此类文件后更改NamedTemporaryFile中的删除标志?
为什么呢?虽然大多数时候我不需要保留临时文件,但如果我从代码中检测到错误,我想保留它们以便能够分析它们。
答案 0 :(得分:3)
对于现在搜索此问题的任何人,至少对于Python 3+,在实例化delete
后更改NamedTemporaryFile
不会改变其初始行为,因为实际标志存储在名为{{1的对象中(_closer
实例)。请参阅Python中的_TemporaryFileCloser
,因为official Python docs没有提及任何内容。
因此,您要么更改未记录的属性:
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
创建,如果您不想再使用该文件,请手动删除该文件。
答案 1 :(得分:2)
根据源代码,delete只是作为NamedTemporaryFile
返回的对象的属性存储,因此您可以在关闭之前修改所需的内容。
f = NamedTemporaryFile()
# stuff
f.delete = False
f.close()
编辑:Python 2也是如此;对于Python 3,请参阅Augusto Men的回答。