本站重新定位为
分享技术和经验的个人博客

python3 中pickle.load TypeError: a bytes-like object is required, not ‘str’

bug原因:Python2 和 3 的字符串兼容问题,数据文件是在Python2下是序列化的,所以使用Python3读取时,需要将‘str’转化为’bytes’。

 

Python2 中的写法:

# 获取汉字label映射表
def get_label_dict():
f=open('chinese_labels','r')
label_dict = pickle.load(f)
f.close()
return label_dict

Python3 中的写法:

class StrToBytes:
def __init__(self, fileobj):
self.fileobj = fileobj
def read(self, size):
return self.fileobj.read(size).encode()
def readline(self, size=-1):
return self.fileobj.readline(size).encode()



# 获取汉字label映射表
def get_label_dict():
with open('chinese_labels', 'r') as f:
label_dict = pickle.load(StrToBytes(f))
return label_dict

赞(0)
这篇文章为天际博客(天朝世纪)原创,转载请注明。天际部落 » python3 中pickle.load TypeError: a bytes-like object is required, not ‘str’

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址