import os
import dill
import pickle
old_pkl_file = " "
new_pkl_file = " "
dill._dill._reverse_typemap["ObjectType"] = object
with open(old_pkl_file, 'rb') as f:
loaded = pickle.load(f, encoding="latin1")
with open(new_pkl_file, 'wb') as outfile:
pickle.dump(loaded, outfile)
(1) pickle文件爲二進制文件,因此讀寫的時候需要'rb'或'wb'。
(2) 在python2轉到python3的數據會報編碼錯誤,例如:“UnicodeDecodeError: 'ascii' codec can't decode byte 0xb1 in position 8: ordinal not in range(128)” 因此需要在load函數上加上編碼:encoding="latin1"。
貼上python3官網上關於此的描述如下:鏈接