我有一個python腳本,運行時間很長。有時我需要中止並稍後運行它。它將當前結果轉儲到一個pickle文件中,但在錯誤的時間中止(CTLR + C)文件被損壞。特殊功能完成運行後中止python腳本
有沒有辦法讓腳本完成該任務並在事後中止? 我不知道在哪裏尋找。
謝謝
編輯:我的程序看起來有點像這樣:
import pickle
for key in keylist:
do_smth(mydict)
with open('myfile.p','w+b') as f:
pickle.dump(mydict,f)
EDIT2:謝謝你們,請嘗試:除了... ...就像一個魅力。 因爲我是腳本的唯一用戶,所以我不需要「保存」版本。但是我肯定會研究它(現在我不熟悉線程)。
我也改變了我的循環,我只會醃我的文件,如果發生異常或循環完成後。
import pickle
for key in keylist:
try:
do_smth(mydict)
except KeyboardInterrupt:
print("Saving data ...")
with open('myfile.p','w+b') as f:
pickle.dump(mydict,f)
with open('myfile.p','w+b') as f:
pickle.dump(mydict,f)
然而,儲蓄可以通過CTRL + C中斷,再次 – DomTomCat
@DomTomCat不,不能。該例外情況是由有興趣保存其數據的用戶生成的。所以我懷疑他會多次發送它。當然,這是一種可能性,但只是建議用戶會更簡單。更簡單,更好的 – Leva7
以及其他人使用該代碼時最新的版本!但是,他們可能會小心,對。但是數據也可能會腐敗 - 例如它只是在調用CTRL + C時被更新 – DomTomCat