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 picklePython
- Python Pickle反序列化帶來的安全問題Python
- Python-geopandas-fiona相容性問題-20241209Python
- python中的pickle功能Python
- python 序列化pickle&json模組PythonJSON
- range方法在Python2和Python3中的不同Python
- Python常用標準庫(pickle序列化和JSON序列化)PythonJSON
- Python之資料序列化(json、pickle、shelve)PythonJSON
- Python3 pickle模組的使用詳解Python
- 2個例項幫你弄清Python的時間和日期問題Python
- python中傳值和傳地址問題Python
- 解決 PyCharm/Python 安裝 cv2 和 OpenCV 報錯的問題PyCharmPythonOpenCV
- react vue 在移動端的相容性問題和一些小細節ReactVue
- Python3內建模組之Pickle和cPickle資料持久化方法小結Python持久化
- Go mod 相容性問題Go
- input file相容性問題
- urllib庫在python2和python3環境下的使用區別Python
- Python 設計和歷史的 27 個問題Python
- python pip相關問題Python
- LeetCode數學問題(Python)LeetCodePython
- 八皇后問題python解法Python
- Python list,dict問題解答Python
- JSON和pickle模組JSON
- Python開發:Python2和Python3的共存和切換使用Python
- Python2和Python3的區別Python
- windows下 相容Python2和Python3WindowsPython
- Python標準庫分享之儲存物件 (pickle包,cPickle包)Python物件
- 常見的相容性問題
- 解決ie相容性問題
- 移動端相容性問題
- 最令人頭疼的Python問題:Python多執行緒在爬蟲中的應用Python執行緒爬蟲
- python2.x和python3.x區別Python
- python2 http響應中文顯示unicode uXXX的問題PythonHTTPUnicodeUX
- Python入門:A+B問題Python
- Matlab轉python的索引問題MatlabPython索引
- python+gurobi求解排班問題Python
- 小白學python遇到問題了.......Python
- python 來做數學問題Python
- Python面試常見問題Python面試