版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/aiynmimi/article/details/87101801
问题
今天下载了一个脚本,在运行时报错TypeError: a bytes-like object is required, not 'str'
,这个错误从字面上看就很明显,类型错误:需要一个类字节的对象,而不是字符串。具体报错的位置在:
label_dict = pickle.load(f)
Python中的Pickle
模块实现了基本的数据序列与反序列化。这一句中pickle
在反序列化文件时报错!
原因
那么既然是在加载文件时报错,就要看一下怎么读取文件的:
f = open('./testwords','r')
label_dict = pickle.load(f)
我们知道:在open()
函数中使用'r'
属性,即文本方式读取,而'rb'
,以二进制文件方式读取。
解决方案
将f = open('./testwords','r')
改为f = open('./testwords','rb')
即可!
也就是说,pickle.load()
和pickle.dump()
都必须要传入二进制的格式才可以!
但是在python2中则无需担心这个问题,写成r
也不会出错!