python3在使用pickle.load()时退出,没有任何错误



我用pickle.dump(dic, open(a_dic,'wb'))在另一个脚本中保存了一个Python3 dic,它是15MB。当我使用pickle.load(open(a_dic,'rb'))加载这个dic时,我的脚本就停止了,没有任何错误。

print('start to load')
pickle.load(open(a_dic,'rb'))
print('finished')

终端仅输出此信息并退出:

start to load

因此无法知道文件是否已成功加载。

您应该将代码更改为

print('start')
with open(a_dic, 'rb') as file:
try:
var = pickle.load(file)
except pickle.PicklingError as exc:
print('Got pickling error: {0}'.format(exc))
print('finished')

然后,您可以添加其他打印,或者只是在调试器中运行该代码来了解实际发生了什么。

您的字典的内容是什么?Pickle是一种故意允许几乎任意代码执行的格式。例如,如果pickle包含在模块foo中定义的类的对象的实例,并且该模块foo在导入时执行类似exit()的代码,那么您可能只会告诉解释器在加载pickle时退出。

最新更新