【发布时间】:2017-09-02 20:58:56
【问题描述】:
我有一个使用 python 2.7 中的 shelve 模块保存的数据文件,该文件在某种程度上已损坏。我可以用db = shelve.open('file.db') 加载它,但是当我调用len(db) 甚至bool(db) 时它会挂起,我必须终止进程。
但是,我可以遍历整个内容并创建一个新的非损坏文件:
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
问题是,我怎样才能测试 dict 并避免挂起?
顺便说一句,我仍然有原始文件,当它复制到其他机器时会表现出相同的行为,以防万一有人也想首先帮助我了解文件的实际问题!
【问题讨论】:
-
不确定是否检查,也许尝试使用一些不同的协议打开stackoverflow.com/questions/23582489/… 也可以在可以超时的子进程中进行
标签: python