簡體   English   中英

在創建文件后,您可以從NamedTemporaryFile更改刪除標志嗎?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM