1、前言
臨時檔案通常用來保存無法儲存在記憶體中的數據,或是傳遞給必須從檔案讀取的外部程式。一般我們會在/tmp目錄下產生唯一的檔名,但是安全的建立暫存檔案並不是那麼簡單,需要遵守許多規則。永遠不要自己去嘗試做這件事,而是要藉助函式庫函數實作。而且也要小心清理臨時文件。
臨時檔案引起的最大問題是,可以預測檔案名,導致惡意使用者可以預測臨時檔案名,從而創建軟連結劫持臨時檔案。
相關免費學習推薦:python影片教學
2、tempfile模組介紹
建立暫存檔案一般使用的模組就是tempfile,此模組庫函數常用的有以下幾個:
3、範例介紹
以下幾種方式分別介紹了安全的建立暫存檔案及不安全的方式。
3.1 不正確範例:
不正確1:
import os import tempfile # This will most certainly put you at risk tmp = os.path.join(tempfile.gettempdir(), filename) if not os.path.exists(tmp): with open(tmp, "w") file: file.write("defaults")
不正確2:
import os import tempfile open(tempfile.mktemp(), "w")
不正確3:
filename = "{}/{}.tmp".format(tempfile.gettempdir(), os.getpid()) open(filename, "w")
#3.2 正確範例
正確1:
#fd, path = tempfile.mkstemp() try: with os.fdopen(fd, 'w') as tmp: # do stuff with temp file tmp.write('stuff') finally: os.remove(path)
正確2:
# 句柄关闭,文件即删除 with tempfile.TemporaryFile() as tmp: # Do stuff with tmp tmp.write('stuff')
正確3:
tmp = tempfile.NamedTemporaryFile(delete=True) try: # do stuff with temp tmp.write('stuff') finally: tmp.close() # 文件关闭即删除
#相關免費學習推薦:python教學(影片)
以上是學習如何正確使用Python臨時文件的詳細內容。更多資訊請關注PHP中文網其他相關文章!