py2中存储的pickle和py3中pickle无法读取的兼容性问题解决方案
生活随笔
收集整理的這篇文章主要介紹了
py2中存储的pickle和py3中pickle无法读取的兼容性问题解决方案
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
問題描述
在py2.7當中,用以下語句將變量存儲到pickle當中
with open('../dataset/m_7800/rf_preds.pickle', 'wb') as f:pickle.dump(rf_preds, f)這個時候,用py3.6中的pickle取獲取存儲好的變量
with open('../dataset/m_7800/rf_preds.pickle', 'rb') as f:rf_preds = pickle.load(f)會報錯
--------------------------------------------------------------------------- UnicodeDecodeError Traceback (most recent call last) <ipython-input-21-8326d2e71e16> in <module>()1 with open('../dataset/m_7800/rf_preds.pickle', 'rb') as f: ----> 2 rf_preds = pickle.load(f)UnicodeDecodeError: 'ascii' codec can't decode byte 0xb1 in position 8: ordinal not in range(128)解決方案
在py3.6的load的過程當中加入encoding=’latin1’即可。
with open('../dataset/m_7800/rf_preds.pickle', 'rb') as f:rf_preds = pickle.load(f, encoding='latin1')如果仍舊不行,可以在py2.7存儲的時候加入protocol=2,再用上面的方式進行load操作,如下
with open('../dataset/m_7800/rf_preds.pickle', 'wb') as f:pickle.dump(rf_preds, f, protocol=2)總結
以上是生活随笔為你收集整理的py2中存储的pickle和py3中pickle无法读取的兼容性问题解决方案的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: openpyxl 读写 excel
- 下一篇: Java 运算符、表达式、语句