函数pickle.load(f, encoding='bytes')
来源:2-5 数据处理与模型图构建(1)
慕婉清4532196
2019-06-27
在2-5数据处理与模型图构建(1)中,出现了函数:
def load_data(filename):
""“read data from data file.”""
with open(filename, ‘rb’) as f:
data = pickle.load(f, encoding=‘bytes’)
return data[b’data’], data[b’labels’]
- 查询相关资料,pickle.load的作用是反序列化,也就是把二进制文件进行解码,不知道这样理解对不对?
- 既然是解码为什么函数的参数是encoding=“bytes”,难道不应该是"utf-8"或者“ASCII”?
- 我在电脑中测试上面的参数都失败了,如果上面的能够成功解码,那么return 后面是否应该是data[“data”].
写回答
2回答
-
慕仔2575155
2020-11-22
我也遇到这个问题了,后面加了encoding = 'bytes',同时还发现,data[b’labels’]的type不是str了,反而变成了bytes
不过最终也不影响输出和读入数据
00 -
正十七
2019-06-27
同学你好,你检查下你用的python版本,你贴的代码是python3的,如果用的是python2的环境,那么会失败。
pickle.load是反序列化。参数是bytes是由如何存储数据决定的,在我们使用的例子里,是bytes。你可以试试python2的用法
def load_data(filename): """read data from data file.""" with open(filename, 'rb') as f: data = cPickle.load(f) return data['data'], data['labels']
032019-11-18
相似问题