Python - pickle 文件不同 python 環境的轉換

Python - pickle 文件不同 python 環境的轉換

在讀取一個 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 即可.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章