簡體   English   中英

如何使用tempfile.NamedTemporaryFile()?

[英]How to use tempfile.NamedTemporaryFile()?

我正在開發一個Python腳本,需要創建大約50個不同的臨時文件,這些文件在腳本過程中經常被附加並在最后合並。 我確信tempfile模塊可以做我需要的,但是我無法弄清楚如何閱讀文檔。

我想使用臨時文件(而不是變量)來節省系統內存,因為這些數據塊會隨着腳本處理數萬個其他文件而變大。

下面的代碼塊是我正在用於在非臨時目錄中創建這些文件(非暫時)的hack:

item = (string from another file)   # string must id file for future use
tmpfile = 'tmpfiles/' + item
if item not in totalitems:
   totalitems.add(item)
   with open(tmpfile, 'w') as itemfile:
      output = some stuff
      tmpfile.write(output)
else:
   with open(tmpfile, 'a') as itemfile:
      output = different stuff
      tmpfile.write(output)

我想我需要的是tempfile.NamedTemporaryFile() 根據文件

可以從文件對象的名稱成員中檢索該名稱。

不幸的是,我不明白這意味着什么。 當我在我正在處理的文件中再次運行其相應的“項目”時,我只需要能夠稍后再次調用每個文件。 我認為這是相當直接的,我只是在密集。 如果它很重要,我有Python 2.7.1和3.2.3的這個腳本的版本。 我真的只需要一個人或另一個人去工作; 我創造了兩個作為學習練習。

“可以從文件對象的名稱成員中檢索該名稱。”

意味着您可以獲取創建的臨時文件的名稱,如下所示:

In [4]: import tempfile

In [5]: tf = tempfile.NamedTemporaryFile()  
In [6]: tf.name  # retrieve the name of the temp file just created
Out[6]: 'c:\\blabla\\locals~1\\temp\\tmptecp3i'

注意 :默認情況下,文件將在關閉時刪除。 但是,如果delete參數為False,則不會自動刪除該文件。 有關更多信息,請參閱有關此文檔Python文檔

由於您可以檢索要創建的50個臨時文件中的每個文件的名稱,因此可以在以后再次使用它們之前將它們保存在列表中(如您所說)。 只需確保相應地設置delete值,以便文件在關閉時不會消失(如果您打算關閉,稍后再重新打開它們)。

我在這里更詳細地解釋了如何創建臨時文件名這里是在Python中生成隨機文件名的最佳方法

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM