python3中pickle存储文件时遇到的问题 TypeError: write() argument must be str, not bytes//保存到文件为乱码

报错的存储代码:
test_data = [‘Save me!’, 123.456, True]
f = open(‘test.data’, ‘w’)
pickle.dump(test_data, f)
f.close()

报错1:
Traceback (most recent call last):
File “/home/zhao/文档/untitled/test65.py”, line 5, in
pickle.dump(test_data, f)
TypeError: write() argument must be str, not bytes

解决方法:
这是因为打开方式不对,**【特别说明】**python3中,通过pickle对数据进行存储时,必须用二进制(b)模式读写文件。
将’w’改为’wb’后,f = open(‘test.data’, ‘wb’),问题解决.

报错2:
文件test.data中的内容为乱码
解决方法:
在dump()里加上第三个参数,设为0.

最终的正确代码
test_data = [‘Save me!’, 123.456, True]
f = open(‘test.data’, ‘wb’)
pickle.dump(test_data, f, 0)
f.close()

参考:https://www.cnblogs.com/billyzh/p/6187651.html和https://blog.csdn.net/maan_liaa/article/details/80899384

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值