Python3读取Python2保存pickle文件错误解决方法

一、问题描述

python2保存pickle文件M,python3读取报错:

a bytes-like object is required, not 'str'

二、解决方法

数据文件是在Python2下序列化的,所以使用Python3读取时,需要将‘str’转化为'bytes'

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()

小的例子:

with open('final_project_dataset.pkl', 'r') as data_file:

    data_dict = pickle.load(StrToBytes(data_file))

含有中文字符的话,在类函数里,编码时要制定编码格式,某些字符GBK不支持会报错,如指定为'UTF8'、'GB2312'

三、小建议

在保存的时候直接保存为wb,猜测读取时直接用rb读取就不会这么麻烦,没有实际实验,如有朋友有测试结果,欢迎评论。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容