例如,在某項目中,我們從傳感器采集資料,每收集到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>建立命名臨時檔案更為合适。