pickle 在python 2和python 3中相容性問題
以下的演示均在python 3環境下進行。
我們以一個簡單的檔案開啟和檔案讀為例說明,pickle讀檔案時可能存在的編碼問題:
import gzip
import pickle
# 使用with結構避免手動的檔案關閉操作
with gzip.open('./mnist.pkl.gz', 'rb') as f:
training_data, validation_data, test_data = pickle.load(f)
如果沿用python 2.x的做法,如上所示,而不做任何編碼格式上的設定,直接執行,編譯器會提示如下錯誤:
UnicodeDecodeError: 'ascii' codec can't decode byte 0x90 in position 614: ordinal not in range(128)
0. 一種 import 的相容性解決思路
try:
import cPickle as pickle
except ImportError:
import pickle
1. 解決方案
一種可行的解決方案是:
with gzip.open('./mnist.pkl.gz', 'rb') as f:
u = pickle._Unpickler(f)
u.encoding = 'latin1'
training_data, validation_data, test_data = u.load()
或者更為精煉地:
with gzip.open('./mnist.pkl.gz', 'rb') as f:
training_data, validation_data, test_data = pickle.load(f, encoding='latin1')
references
[1] <Pickle incompatability of numpy arrays between Python 2 and 3>
相關文章
- Python Pickle反序列化帶來的安全問題Python
- python核心模組之pickle和cPickle講解Python
- python中的pickle功能Python
- python中pickle簡介Python
- pickle和cPickle:Python物件的序列化(下)Python物件
- pickle和cPickle:Python物件的序列化(上)Python物件
- Python序列化模組pickle和json使用和區別PythonJSON
- Python升級和相容性配置Python
- Python3 pickle模組的使用詳解Python
- python 序列化pickle&json模組PythonJSON
- range方法在Python2和Python3中的不同Python
- Python常用標準庫(pickle序列化和JSON序列化)PythonJSON
- Python 字元編碼問題和其他一些問題Python字元
- 2個例項幫你弄清Python的時間和日期問題Python
- python中傳值和傳地址問題Python
- JAVASCRIPT相容性問題JavaScript
- react vue 在移動端的相容性問題和一些小細節ReactVue
- 除法運算子/在Python2和Python3中的區別Python
- 解決 PyCharm/Python 安裝 cv2 和 OpenCV 報錯的問題PyCharmPythonOpenCV
- 【python】使用pickle模組將資料永久儲存,pickle.dump()序列化、pickle.load()反序列化例項詳解Python
- JS的IE和FF相容性問題彙總JS
- Python3內建模組之Pickle和cPickle資料持久化方法小結Python持久化
- Go mod 相容性問題Go
- input file相容性問題
- Ibatis相容性問題BAT
- python list 排序問題Python排序
- python 縮排問題Python
- Python中文問題研究Python
- Python之資料序列化(json、pickle、shelve)PythonJSON
- [原]關於在Python和C#之間訊息傳遞的問題PythonC#
- python訪問redis的問題PythonRedis
- Python問答環節(2)Python
- Python 設計和歷史的 27 個問題Python
- parseInt()方法在IE8和IE8以下瀏覽器的相容性問題瀏覽器
- python2和python3的不同Python
- Python標準庫分享之儲存物件 (pickle包,cPickle包)Python物件
- 解決ie相容性問題
- RichFaces editor的相容性問題