什么樣的情況下需要我創建臨時文件呢?我很早就知道這個模塊,但一直沒有使用過它,也沒有興趣去研究它,一度認為自己用不到這個模塊。存在即合理,合理的才能存在,想來是我不夠虛心,才沒有看到這個模塊的應用價值。
1. 臨時文件目錄
在linux系統下有一個/tmp 目錄,這個目錄下存儲的都是些臨時文件,創建這些臨時文件的可能是操作系統,也可能是你安裝的某個軟件系統,比如,你自己寫的程序也可以對這里的文件進行讀寫操作。
臨時文件目錄下的文件夾和文件,會被定期清理,默認是30天。這就要求/tmp目錄下存儲的文件,必須都是可刪除的文件,刪除后不能對系統或軟件的運行產生影響。
系統下也有類似的文件夾,在我的電腦上下載失敗 臨時文件或其所在磁盤不可寫,這個目錄是C:\Users\\\Local\Temp 。
2.
使用模塊,可以創建臨時文件和臨時文件夾,主要應用它的兩個函數, 和
from tempfile import mkstemp, mkdtemp
path = mkdtemp() # 創建臨時文件夾
print(path)
_, filepath = mkstemp() # 創建臨時文件
print(filepath)
什么樣的場景下需要使用臨時文件呢?我歸納總結為一條:程序運行后,你再也不會使用這些文件時,就可以創建為臨時文件。
程序一旦結束,運行期間所創建的文件便失去應用價值,那么這樣的文件就可以創建為臨時文件。所謂臨時文件,本質上就是在/tmp 目錄下創建的文件,會定期清理。
由于這些文件在程序結束后不會再被使用,那么我們也就不必關心它在哪里創建,不必擔心它因為長期積累而占用磁盤空間,我們甚至不用考慮為它起一個名字,模塊會為臨時文件取一個隨機的名稱。
這些文件存在于程序運行期間,模塊簡化了我們對這些文件的管理下載失敗 臨時文件或其所在磁盤不可寫,和會返回文件夾和文件的路徑,這可以確保我們能夠對文件夾和文件進行操作但又不必去管理他們,這些管理包括新建,刪除等操作。
3. 使用技巧
盡管我們創建的是臨時文件,但在特定情況下,依然需要我們做一些簡單的管理,比如設置文件的前綴和后綴
def mkstemp(suffix=None, prefix=None, dir=None, text=False):
pass
通過設置 和 參數,可以決定文件名稱的后綴和前綴,如果在調試程序期間你需要查看臨時文件,這些前綴和后綴可以提供一些幫助。
dir參數,決定臨時文件在哪個文件夾下被創建,默認是在/tmp目錄下創建,你可以設置為自己管理的文件夾。
4. 總結
在程序運行期間產生的中間文件既不能作為程序的輸出成果來展示,也沒有后續的應用價值,創建為臨時文件,則不必去管理他們。