Python模組學習:tempfile 臨時檔案(夾)操作

發表於2015-05-26

應用程式經常要儲存一些臨時的資訊,這些資訊不是特別重要,沒有必要寫在配置檔案裡,但又不能沒有,這時候就可以把這些資訊寫到臨時檔案裡。其實很多程式在執行的時候,都會產生一大堆臨時檔案,有些用於儲存日誌,有些用於儲存一些臨時資料,還有一些儲存一些無關緊要的設定。在windows作業系統中,臨時檔案一般被儲存在這個資料夾下:C:/Documents and Settings/User/Local Settings/Temp。其實我們最常用的IE瀏覽器在瀏覽網頁的時候,會產生大量的臨時檔案,這些臨時檔案一般是我們瀏覽過的網頁的本地副本。Python提供了一個tempfile模組,用來對臨時資料進行操作。查閱Python手冊,裡面介紹瞭如下常用的方法:

tempfile.mkstemp([suffix=”[, prefix=’tmp'[, dir=None[, text=False]]]])

mkstemp方法用於建立一個臨時檔案。該方法僅僅用於建立臨時檔案,呼叫tempfile.mkstemp函式後,返回包含兩個元素的元組,第一個元素指示操作該臨時檔案的安全級別,第二個元素指示該臨時檔案的路徑。引數suffix和prefix分別表示臨時檔名稱的字尾和字首;dir指定了臨時檔案所在的目錄,如果沒有指定目錄,將根據系統環境變數TMPDIRTEMP或者TMP的設定來儲存臨時檔案;引數text指定了是否以文字的形式來操作檔案,預設為False,表示以二進位制的形式來操作檔案。

tempfile.mkdtemp([suffix=”[, prefix=’tmp'[, dir=None]]])

該函式用於建立一個臨時資料夾。引數的意思與tempfile.mkdtemp一樣。它返回臨時資料夾的絕對路徑。

tempfile.mktemp([suffix=”[, prefix=’tmp'[, dir=None]]])

mktemp用於返回一個臨時檔案的路徑,但並不建立該臨時檔案。

tempfile.tempdir

該屬性用於指定建立的臨時檔案(夾)所在的預設資料夾。如果沒有設定該屬性或者將其設為None,Python將返回以下環境變數TMPDIR, TEMP, TEMP指定的目錄,如果沒有定義這些環境變數,臨時檔案將被建立在當前工作目錄。

tempfile.gettempdir()

gettempdir()則用於返回儲存臨時檔案的資料夾路徑。

tempfile.TemporaryFile([mode=’w+b'[, bufsize=-1[, suffix=”[, prefix=’tmp'[, dir=None]]]]])

該函式返回一個 類檔案 物件(file-like)用於臨時資料儲存(實際上對應磁碟上的一個臨時檔案)。當檔案物件被close或者被del的時候,臨時檔案將從磁碟上刪除。mode、bufsize引數的單方與open()函式一樣;suffix和prefix指定了臨時檔名的字尾和字首;dir用於設定臨時檔案預設的儲存路徑。返回的類檔案物件有一個file屬性,它指向真正操作的底層的file物件。

tempfile.NamedTemporaryFile([mode=’w+b'[, bufsize=-1[, suffix=”[, prefix=’tmp'[, dir=None[, delete=True]]]]]])

tempfile.NamedTemporaryFile函式的行為與tempfile.TemporaryFile類似,只不過它多了一個delete引數,用於指定類檔案物件close或者被del之後,是否也一同刪除磁碟上的臨時檔案(當delete = True的時候,行為與TemporaryFile一樣)。

tempfile.SpooledTemporaryFile([max_size=0[, mode=’w+b'[, bufsize=-1[, suffix=”[, prefix=’tmp'[, dir=None]]]]]])

tempfile.SpooledTemporaryFile函式的行為與tempfile.TemporaryFile類似。不同的是向類檔案物件寫資料的時候,資料長度只有到達引數max_size指定大小時,或者呼叫類檔案物件的fileno()方法,資料才會真正寫入到磁碟的臨時檔案中。

蠻簡單、實用的一個模組,不是嗎?

相關文章