介紹如何使用 Python 的 tempfile
模組自動建立暫存檔案或目錄,存放暫時性的資料。
TemporaryFile()
可以用來建立暫存用的檔案,預設會以二進位的方式開啟,我們可以將暫存資料寫入檔案中,需要時再讀取出來,而在檔案關閉之後,該暫存檔就會自動被刪除。
# 引入 tempfile 模組 import tempfile # 建立並開啟暫存檔案(二進位) fp = tempfile.TemporaryFile() # 寫入二進位資料 fp.write(b'Hello, world.') # 將檔案讀寫位置(offset)設定為最開頭 fp.seek(0) # 讀取檔案內容 content = fp.read() # 輸出結果 print(content) # 關閉檔案(自動刪除檔案) fp.close()
b'Hello, world.'
如果想要儲存的資料是文字,可以改用文字模式開啟暫存檔:
import tempfile # 建立並開啟暫存檔案(文字檔) fp = tempfile.TemporaryFile(mode = 'w+t') # 寫入文字資料 fp.write('Hello, world.') fp.seek(0) content = fp.read() print(content) fp.close()
Hello, world.
若搭配 with
使用,可讓語法更簡潔:
import tempfile with tempfile.TemporaryFile('w+t') as fp: fp.write('Hello, world.') fp.seek(0) content = fp.read() print(content) # 自動刪除暫存檔
使用 TemporaryFile()
所建立的暫存檔是匿名的,如果需要取得檔案名稱,可以改用 NamedTemporaryFile()
:
import tempfile with tempfile.NamedTemporaryFile('w+t') as fp: print('暫存檔:', fp.name) # ... # 自動刪除暫存檔
暫存檔: C:\Users\OfficeGuide\AppData\Local\Temp\tmp8f1mb1z0
具名的暫存檔案一樣會在關閉時自動被刪除,如果希望自己管理暫存檔案的刪除動作,可以加上 delete=False
參數:
import tempfile import os with tempfile.NamedTemporaryFile('w+t', delete = False) as fp: tmpFilename = fp.name # ... # 自行刪除暫存檔 os.unlink(tmpFilename)
若需要建立一個暫存目錄,存放各種暫存檔案,可以使用 TemporaryDirectory()
函數,在暫存目錄中可以存放任意數量的暫存檔,使用完畢之後,該暫存目錄(連同裡面所有檔案)會自動被刪除。
import tempfile with tempfile.TemporaryDirectory() as dirname: print('暫存目錄:', dirname) # ... # 自動刪除暫存目錄與所有內容