0
的文件我有一個長期運行的Python進程定期轉儲使用恢復長時間運行的Python進程
while True:
do_something()
pickle.dump(var, open('file','wb'))
我刪除了「文件」假定它會被改寫反正但該文件已經一去不復返了泡菜。我認爲每次調用open()時,python都會創建一個新的文件處理程序。無論如何恢復這個文件?該進程仍在運行,它仍然會寫入'文件'。
這是一個Ubuntu電腦的方式
你確定腳本沒有掛在別的地方嗎?你應該創建一個新文件是正確的。另外,這個腳本運行了多久,你是否抓住這個代碼的例外?如果腳本已經運行了很長時間,則可能是因爲沒有正確關閉它們而打開了文件描述符上的操作系統限制。 – skrrgwasme
我同意上面的評論,在幾個層面上,劇本可能會掛在別的地方。腳本是否附加到文件中,我認爲這將是'w +',而不是'w'。另外,你應該使用一個上下文管理器來打開你的文件,在這種情況下用''''''''語句。 – dave
要檢查由於不正確關閉而導致文件的多個實例存有不必要的描述符,可以使用「lsof | grep name_of_file」。 – stevieb