Python3: TypeError: a bytes-like object is required, not 'str'

版权声明:本文为博主原创文章,未经博主允许不得转载。 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也不会出错!

猜你喜欢

转载自blog.csdn.net/aiynmimi/article/details/87101801