將在python2下生成的pkl文件轉換成可被python3讀取的pkl

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官網上關於此的描述如下:鏈接

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