Python使用pickle报错:TypeError: a bytes-like object is required, not ‘str‘

本文讨论了在复现他人代码时遇到的Python2到Python3版本转换问题,特别是类型错误,指出在读取pickle文件时需要考虑编码方式。提供了解决方案,即在打开文件时指定'rb'模式,并在pickle.load时添加encoding='bytes'参数。建议在运行他人代码前,确保环境配置符合要求,以避免增加额外的时间成本。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、错误

在这里插入图片描述

2、原因

①“类型错误:需要类似字节的对象,而不是字符串”
②这是跑别人的代码,人家用的环境是python2,我用的是python3,在写法上有一定的区别

3、解决

with open('../infos/prior.pickle') as fp: priors = pickle.load(fp)

修改为

with open('../infos/prior.pickle', 'rb') as fp: priors = pickle.load(fp,encoding='bytes')

附:人工智能方面的学术研究,避免不了要跑或者是复现别人的代码,很容易出现因为python版本不一致而导致的各种错误,所以在跑大佬的代码时要尽可能的按照文档所给要求进行环境配置;如果条件不允许的话,大家也可以用以上类似的思路来解决问题,但是这样会增加时间成本,所以尽量避免。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值