在读取一个 pickle 文件时, 由于刚开始未知其是有 python2 还是 python3 的 pickle 库保存的, 在 python2 环境读取时, 导致出现错误:
import pickle
testpkl = pickle.loads(open("test.pickle", "rb").read())
Traceback (most recent call last): File “”, line 1, in File “/usr/lib/python2.7/pickle.py”, line 1382, in loads return Unpickler(file).load() File “/usr/lib/python2.7/pickle.py”, line 858, in load dispatchkey File “/usr/lib/python2.7/pickle.py”, line 886, in load_proto raise ValueError, “unsupported pickle protocol: %d” % proto ValueError: unsupported pickle protocol: 3
其原因是, 该test.pickle
是 python3 环境下生成的, 因此 python2 读取时不兼容.
解决方案:
#!/usr/bin/env python3
import pickle
import pickle
testpkl = pickle.loads(open("test.pickle", "rb").read())
pickle.dump(w, open("testpkl_py2.pkl","wb"), protocol=2)
在 python2 环境读取 testpkl_py2.pkl
即可.
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有