[英]Can you change the delete flag from a NamedTemporaryFile after the file was created?
如何在創建此類文件后更改NamedTemporaryFile中的刪除標志?
為什么? 雖然大多數時候我不需要保留臨時文件,但如果我從代碼中檢測到錯誤,我想保留它們以便能夠分析它們。
對於現在搜索這個問題的任何人,至少對於Python 3+,在實例化NamedTemporaryFile
之后更改delete
不會改變其初始行為,因為實際標志存儲在名為_closer
的對象(這是_TemporaryFileCloser
實例)中。 請參閱Python中的tempfile.py
,因為官方Python文檔沒有提及任何內容。
所以你要么改變這個未記錄的屬性:
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)
創建NamedTemporaryFile(delete=False)
,然后如果您不再需要該文件,請手動刪除該文件。
根據源代碼,delete只是作為NamedTemporaryFile
返回的對象的屬性存儲,因此您可以在關閉它之前盡可能多地修改它。
f = NamedTemporaryFile()
# stuff
f.delete = False
f.close()
編輯:Python 2也是如此; 對於Python 3,請參閱Augusto Men的回答。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.