2017-06-21 138 views
1

我使用的是Python包,cdo,這在很大程度上依賴於tempfile存儲中間結果中刪除臨時文件。創建的臨時文件非常大,更大的運行計算時,我碰到了/tmp目錄得到了填補和腳本用disk full錯誤(我們正在談論10S到GB的100S)失敗的問題。我找到的解決方法,通過創建本地文件夾的問題,說$HOME/tmp,然後做腳本評估

import tempfile 
tempfile.tempdir='$HOME/tmp' 

導入cdo模塊之前。雖然這對我很有用,但如果我也想讓其他人使用我的腳本,這有點麻煩。因此,我想知道,是否會有解決的,例如,告訴tmpfile定期清除所有的臨時文件(通常一旦腳本完成這個只是做)的問題更優雅的方式。從我這邊來看,這是可能的,因爲我正在運行一個長循環,每次迭代都會生成一個指定文件,並且在此迭代過程中創建的所有臨時文件都將在後續丟棄。

+0

只需要使用https://stackoverflow.com/questions/21257782/how-to-remove-file-when-program-exits它會自動刪除臨時文件,當文件被關閉討論的臨時文件模塊。 – MeterLongCat

+0

@MeterLongCat如問題所說,CDO使用'tempfile',我需要*劇本完成之前刪除。不幸的是,我不能控制cdo在創建時傳遞給'TemporaryFile()'實例的參數。 –

回答

2

examples顯示:你可以在上下文管理使用tempfile

with tempfile.TemporaryFile() as fp: 
    fp.write(b'Hello world!') 
    fp.seek(0) 
    fp.read() 

當上下文退出刪除它們的方式。

...你有過怎樣cdo使用臨時文件太多的控制?

+0

不幸的是,我沒有這種控制,但是無論如何,這個例子都不錯。 –

+0

...對不起! –