Python3:pickle加载文件产生UnicodeDecodeError


描述

  • 我在做mnist项目的时候,需要读取mnist.pkl.gz文件,找到示例代码如下:
import cPickle
import gzip
f = gzip.open('../data/mnist.pkl.gz')
training_data, validation_data, test_data = cPickle.load(f)
f.close()
Bug_1. 没有cPickle这个模块
  • CPickle这个模块是Python2中的,Python3中换成了pickle,修改代码如下:
import pickle
import gzip
f = gzip.open('../data/mnist.pkl.gz')
training_data, validation_data, test_data = pickle.load(f)
f.close()
Bug_2. 如下:
UnicodeDecodeError         Traceback (most recent call last)
 in ()
      1 f = gzip.open('data/mnist.pkl.gz')
----> 2 train_data, cv_data, test_data = pickle.load(f)
      3 f.close()

UnicodeDecodeError: 'ascii' codec can't decode byte 0x90 in position 614: ordinal not in range(128)
  • 这里出现了解码错误
  • 修改代码如下:
f = gzip.open('data/mnist.pkl.gz')
train_data, cv_data, test_data = pickle.load(f, encoding='iso-8859-1')
f.close()

数据可以读入, 完工!

你可能感兴趣的:(Python3:pickle加载文件产生UnicodeDecodeError)