【Python】 tempfile模塊 臨時文件和目錄的處理


【tempfile】

  驚奇地又發現了一個比較有意思的小模塊。

  在一些場景中我們經常需要自動生成一些臨時文件,當然用簡單的open函數,來創建一個隱藏文件可以實現。不過tempfile這個模塊把一些有的沒的功能全部都封裝完畢。我們直接使用即可。

  ■  簡單使用

from tempfile import TemporaryFile

temp = TemporaryFile()
print temp
print temp.name

'''
TemporaryFile類的構造方法,其返回的還是一個文件對象。但這個文件對象特殊的地方在於
1. 對應的文件沒有文件名,對除了本程序之外的程序不可見
2. 在被關閉的同時被刪除
所以上面的兩句打印語句,輸出分別是一個文件對象,以及一個<fdopen>(並不是文件名)
'''
# 向臨時文件中寫入內容
temp.write('hello\nworld')

# ...一些操作之后需要讀取臨時文件的內容了
temp.seek(0)     # 從頭讀取,和一般文件對象不同,seek方法的執行不能少
print temp.read()

temp.close()    # 關閉文件的同時刪除文件

   TemporaryFile類是tempfile中最常用的類之一,其目的就在於提供一個統一的臨時文件調用接口,讀寫臨時文件,並且保證臨時文件的隱形性。這個類的構造方法和一般的文件對象很類似:tempfile.TemporaryFile([mode='w+b'[, bufsize=-1[, suffix=''[, prefix='tmp'[, dir=None]]]]])。可以看到默認的打開模式是w+b,但是和一般通過wb模式打開的文件對象不同之處在於,正如上面所示它也可以用於讀取文件。

  

  在TemporaryFile類的基礎上又衍生出了兩個更加精細化的類用來處理。NamedTemporaryFile類是在前者的基礎上,初始化時加上了delete參數,默認值為True。當此參數為True時和TemporaryFile類完全一致。如果是False,那么臨時文件對象在被關閉時不會刪除。因此可以在下面的代碼中通過同樣的對象再次打開。

  另一個是SpooledTemporaryFile,它在TemporaryFile的基礎上增加了一個max_size參數默認值為0。當這個類的對象調用write方法向臨時文件中寫入內容時,這些內容暫時先存在於緩存中,只有當內容大小達到了max_size指定的大小(經試驗應該不是這樣的,存疑)

 

  ●  創建臨時文件夾

  tempfile中還有創建臨時目錄的功能。比如tempfile.mkdtemp方法。這個方法做的事情是在系統指定的臨時目錄下(比如TEMP,TEMPDIR這些環境變量指向的目錄)創建一個臨時目錄,可以指出一個標識名讓目錄名中包含這個標識名。方法返回的是新創建的臨時目錄的路徑。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM