Python 模塊 Tempfile

Python 模塊 Tempfile

Python 模塊 tempfile 目的是在系統中創建臨時文件。

使用模塊 tempfile,在系統中創建一個臨時文件,具有安全的唯一文件名,防止被其他人猜出或者數據被盜。模塊還提供了多種方法生成臨時文件,例如 TemporaryFile() 函數返回一個未命名的臨時文件,NamedTempraryFile() 函數返回一個帶有名稱的臨時文件,SpooledTemporaryFile 在內容寫入文件前,會把內容緩存在內存中,TemporaryDirectory 實現了內容管理器上下文接口,當操作結束後會自動刪除目錄。

臨時文件


應用有時需要使用臨時文件存儲數據,而不需要和其他應用共享。可以使用 TemporaryFile() 函數創建文件,因為不在系統文件表(file system table)中引用,其他應用也不會訪問到。當調用 close() 方法後或者在 with 語句後,臨時文件會自動刪除。

Python 模塊 Tempfile

執行:

Python 模塊 Tempfile

這個例子使用了兩種方法創建文件,一種是使用內置函數 open(),創建的文件有名稱,並且在系統中存在。最後需要再使用 os.remove() 函數手動刪除。使用 TemporaryFile() 函數創建的文件名稱是一個數字,with 語句後會自動刪除臨時文件。

默認 TemporaryFile() 打開的文件模式是 w+b,這樣是為了方便在更多平臺直接使用。

Python 模塊 Tempfile

執行:

Python 模塊 Tempfile

可以使用參數 mode 改變默認的行為。

Python 模塊 Tempfile

執行:

Python 模塊 Tempfile

在本例,文件對象使用文本模式。

命名文件


有時候,需要使用有名稱的臨時文件,在跨進程或者跨主機的應用使用。使用函數 NamedTemporaryFile() 。

Python 模塊 Tempfile

執行:

Python 模塊 Tempfile

Spooled File


函數 SpooledTemporaryFile() 它使用 io.BytesIO 或 io.StringIO 作為緩存,把文件內容存儲在內存中,直到一個臨界值(threshold),然後才寫入到磁盤,然後緩存變為 TemporaryFile()。

Python 模塊 Tempfile

執行:

Python 模塊 Tempfile

這個例子中,緩存大小為100,一開始使用的 io.StringIO 存儲在內存中,當數據量大於100時,_rolled 屬性變為 True,io.StringIO 替換為 io.TextIOWrapper。

臨時目錄


當想要創建更多的臨時文件時,更便利的方法是創建一個臨時目錄,然後在臨時目錄中再創建臨時文件。

Python 模塊 Tempfile

執行:

Python 模塊 Tempfile

本例中,使用 TemporaryDirectory() 函數創建了臨時目錄,然後創建了一個臨時文件,寫入了一些內容。

with 語句後,臨時目錄和文件都不存在了。

臨時文件位置


根據平臺的不同,文件存儲位置也不同,你也可以顯示的使用參數 dir 改變默認存儲位置。tempfile 包含兩個方法獲取存儲的位置信息。

Python 模塊 Tempfile

執行:

Python 模塊 Tempfile

本例中,修改屬性 tempdir 對臨時目錄進行了修改。


分享到:


相關文章: