三: JSON 和 pickle 两个模块之间的区别
- #JSON 可以连续 dump, 但是 load 只能一次性把所有数据拿出来, 进行反序列化, 造成数据错误针对于这个弊端, 可以使用 loads 来解决
- dic = {'a':1,'b':2}
- with open('ceshi002.json',mode="w",encoding='utf-8') as fp:
- JSON.dump(dic,fp)
- fp.write('\n')
- JSON.dump(dic,fp)
- fp.write('\n')
- print("=====================")
- with open("ceshi002.json",mode="r",encoding="utf-8") as fp:
- #res = JSON.load(fp) error
- for i in fp:
- #读一行, 反序列化成一个字典, 一次循环
- res= JSON.loads(i)
- print(res,type(res))
- #pickle 允许连续 dump, 也允许连续 load
- # 例 1:
- import pickle
- dic = {'a':3,'b':4}
- with open("ceshi003.pkl",mode="wb") as fp:
- pickle.dump(dic,fp)
- pickle.dump(dic,fp)
- pickle.dump(dic,fp)
- pickle.dump(dic,fp)
- with open("ceshi003.pkl",mode="rb") as fp:
- '''
- res = pickle.load(fp)
- print(res)
- res = pickle.load(fp)
- print(res)
- res = pickle.load(fp)
- print(res)
- res = pickle.load(fp)
- print(res)
- '''
- #res = pickle.load(fp)
- #print(res)
- # 是否可以把所有数据都一次性拿出来 #用 try...except.. 抑制多调用的那一次的报错
- # 异常格式
来源: http://www.bubuko.com/infodetail-3064193.html