2012-11-29 37 views
18

我正在做一些文件處理和生成文件,我需要從現有數據生成一些臨時文件,然後將該文件用作我的函數的輸入。如何在django中生成臨時文件然後銷燬

但我很困惑我應該在哪裏保存該文件,然後刪除它。

是否存在這樣的文件自動獲取用戶會話

回答

38

Python有tempfile module正是爲了這個目的。您不必擔心文件的位置/刪除,它適用於所有支持的平臺。

有三種類型的臨時文件:

  • tempfile.TemporaryFile - 只是基本的臨時文件,
  • tempfile.NamedTemporaryFile - 「此功能工作完全一樣TemporaryFile()確實,除了該文件是保證有一個明顯的文件系統中的名稱(在Unix上,目錄條目不是不鏈接的),該名稱可以從文件對象的名稱屬性中檢索到,「,
  • tempfile.SpooledTemporaryFile - 」Thi s功能的操作與TemporaryFile()完全一樣,除了數據被緩存到內存中,直到文件大小超過max_size,或直到調用文件的fileno()方法,此時內容被寫入磁盤並且操作與TemporaryFile()一樣進行。

編輯:你問的用法示例可能看起來像這樣:

>>> with TemporaryFile() as f: 
     f.write('abcdefg') 
     f.seek(0) # go back to the beginning of the file 
     print(f.read()) 


abcdefg 
+0

你能告訴我創建的臨時文件,然後使用它的一些例子,我找不到它在pagr – user825904

+0

@ user32上:這個例子很簡單:你實例化一個類並獲得打開的文件作爲回報,然後你就像對待它是標準文件一樣操作它(具有文檔中提到的限制,意味着它只是暫時的等)。 – Tadeck

0

後刪除,您應該使用的東西從tempfile模塊任何臨時位置。我認爲它擁有你需要的一切。