2017-07-15 39 views
-1

的標準答案,「我怎麼能保證文件在Python關閉」是包裝的命令在一個「with」語句,使調用析構函數退出「with」塊。在python,確保文件被關閉時,不能使用「與」

但約,你不能這樣做,因爲文件句柄需要跨越大片的代碼保持開放的情況下,是什麼?例如,在對象構造函數中打開文件句柄,將其保存到對象屬性中,然後在許多對象方法中引用文件句柄。

這將是可能的文件句柄的開放移動到方法本身,但基本上在這種情況下,我會打開/每一個方法被調用時,這是效率遠不如關閉文件。

我試圖在對象的析構(以下簡稱「德爾」的方法)將「關閉」命令,但這不起作用。

+0

爲什麼不能在析構函數中關閉文件?當你完成它時,對象是不會被銷燬的?如果它失敗並停留在周圍,你可以將它包裝在'try'-'except'''finally'塊中。 – JohanL

+0

我通過殺死內核來終止程序(即我在Spyder中點擊大停止按鈕)。如果有的話,我不確定在這種情況下執行什麼。 – Stephen

+0

嘗試/除了/最後可能不會工作,因爲再次,「開放」命令是在構造函數中,但隨後程序移動並開始從其他方法寫入 – Stephen

回答

0

髒,但易勝是爲了使文件名的紀錄,當您打開它們,並確保file.close(...)出現在末尾。保留一個列表或包裝open()函數(由this post建議)可以完成這項工作。

Post check what files are open in Python 建議像包裝內置文件對象,命令行方法和模塊psutil等幾種解決方案,也許其中一些將適合您的情況。

相關問題