当我使用pickle.load(“foo”)加载pickle时,如何知道回读的内容是否已损坏?例如,如果我在使用pickle.dump腌制一个大型列表并在完成之前杀死我的python进程,那么后果会是什么以及我应该如何处理它们?
答案 0 :(得分:1)
如果由于某种原因导致unpickling失败,可能会抛出几个Error中的一个。您可以捕获异常并正确处理案例。
然而,有争议的是,不正确的腌制或篡改数据可能会偶然地被打开。导致无效结果。更安全的方法是在您的pickle上附加校验和,并在unpickling期间验证校验和。查看this answer for an example
答案 1 :(得分:0)
我刚刚手动损坏了一个pickle文件。它引发了一个错误。据推测,如果一个文件没有抛出错误,那么它就是你腌制的文件,或者它被如此小心地篡改,以至于它愚弄了pickle模块。在那种情况下,我认为你已经沉没了。