天天看點

24. 使用臨時檔案

例如,在某項目中,我們從傳感器采集資料,每收集到1g資料後,做資料分析,最終隻儲存分析結果。這樣很大的臨時檔案如果常駐記憶體,将消耗大量記憶體資源。

要求:使用臨時檔案存儲這些臨時資料(外部存儲)。臨時檔案不用命名,且關閉後會自動被删除。

解決方案:

使用标準庫中的<code>temporaryfile</code>(臨時檔案)以及<code>namedtemporaryfile</code>(命名臨時檔案)。

對于<code>temporaryfile()</code>:

建立并傳回一個臨時檔案,該檔案在檔案系統中無法通路。mode預設是二進制可讀可寫。

對于<code>namedtemporaryfile()</code>:

建立并傳回一個命名的臨時檔案,該檔案在檔案系統中可通路,這是python庫對臨時檔案進行操作的。<code>delete=true</code>表示檔案在關閉時删除。

對于<code>os.open()</code>方法:

為低級别io打開一個檔案,傳回一個檔案描述符(整數)。當<code>flags</code>為<code>o_tmpfile</code>時會建立一個臨時檔案,關閉時删除,這是作業系統對臨時檔案進行操作。且指定路徑為目錄(不是檔案),即在該目錄下建立臨時檔案。

方案示例:

<code>namedtemporaryfile()</code>建立的臨時檔案名是通過<code>suffix=none, prefix=none, dir=none</code>這幾個參數來決定的。

這些預設參數都是可修改的。

臨時檔案關閉後會自動删除,這是因為<code>delete</code>參數預設為true。

通常情況下使用<code>temporaryfile</code>建立臨時檔案即可,但是在多程序都想通路同一臨時檔案時,使用<code>namedtemporaryfile</code>建立命名臨時檔案更為合适。