鱼C论坛

 找回密码
 立即注册
查看: 959|回复: 2

第32课关于pickle的问题

[复制链接]
发表于 2019-1-19 22:48:32 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
我试图用pickle创建一个.json文件,然后用json去load,但是出现了编码的错误
>>>import pickle as p
>>>import json as j
>>>b='{"y":1,"c":2}'
>>>f=open('test.json','wb')
>>>p.dump(b,f)
>>>f.close()
>>>j.load(f)
Traceback (most recent call last):
  File "<pyshell#73>", line 1, in <module>
    j.load(f)
  File "D:\Programme\Python\lib\json\__init__.py", line 300, in load
    parse_constant=parse_constant, object_pairs_hook=object_pairs_hook, **kw)
  File "D:\Programme\Python\lib\json\__init__.py", line 350, in loads
    s = s.decode(detect_encoding(s), 'surrogatepass')
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x80 in position 0: invalid start byte
于是,我尝试不用二进制'b'去编码,结果还是报错
>>>import pickle as p
>>>import json as j
>>>b='{"y":1,"c":2}'
>>>f=open('test.json','w')
>>>p.dump(b,f)
Traceback (most recent call last):
  File "<pyshell#78>", line 1, in <module>
    p.dump('{"y":1,"c":2}',f)
TypeError: write() argument must be str, not bytes
但type(b) 明显是str, 为什么会报这样的错误? 最后用pickle创建.json , 用json.load() 去把字符串中的字典提取出来,应该怎么做?谢谢
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2019-1-20 08:56:33 | 显示全部楼层
>f=open('test.json','w')

错误提示你只能写入str,不能写入字节。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-1-20 09:49:41 | 显示全部楼层
'{"y":1,"c":2}' 显然是str啊,就算dump的是 '123', 不是'{"y":1,"c":2}'   也会报这个错误。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-3-30 16:15

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表