在创建文件后,您可以从NamedTemporaryFile更改删除标志吗?

时间:2011-11-16 15:23:49

标签: python temporary-files

如何在创建此类文件后更改NamedTemporaryFile中的删除标志?

为什么呢?虽然大多数时候我不需要保留临时文件,但如果我从代码中检测到错误,我想保留它们以便能够分析它们。

2 个答案:

答案 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的回答。