我有一個數據文件使用python 2.7中的擱置模塊保存,該數據文件以某種方式損壞。我可以加載它db = shelve.open('file.db')
,但是當我打電話len(db)
甚至bool(db)
它掛起,我必須殺死這個過程。是否有可能檢測到腐敗的Python字典
但是,我能夠遍歷整個事情並創建一個新的非損壞的文件:
db = shelve.open('orig.db')
db2 = shelve.open('copy.db')
for k, v in db.items():
db2[k] = v
db2.close() # copy.db will now be a fully working copy
的問題是,我如何測試字典,避免掛?
順便說一句,我仍然有原始文件,並且在複製到其他機器時表現出相同的行爲,以防有人也希望幫助我找到文件中實際存在錯誤的底部!
不知道的檢查,也許嘗試一些不同的協議開放http://stackoverflow.com/questions/23582489/python-pickle-protocol-choice也可以在一個子進程中執行,你可以超時 – brennan