json和pickle的序列化与反序列化
Posted %木糖醇---LHY%
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了json和pickle的序列化与反序列化相关的知识,希望对你有一定的参考价值。
(1)json的序列化
\'\'\' Json序列化实现了把内存中的内容放到硬盘上,通过Json反序列化又把硬盘上的内容都回来的效果,用到的函数分别为json.dumps()和json.loads();(Json只支持简单的数据对象,例如字符串、字典、数组等。) 在python3中,json可以dump多次,但是只能load一次;所以使用json序列化时尽量只dump一次,只load一次,如果需要多次dump,每次都要dump到不同的文件夹中。 \'\'\' import json info={"name":"lhy", "age":18 } f=open(\'text.txt\',\'w\') #f.write(json.dumps(info)) json.dump(info,f) f.close()
序列化的结果:
text.txt文件中存入了:{"age": 18, "name": "lhy"}
(2)json的反序列化:
import json f=open("text.txt",\'r\') data=json.loads(f.read()) #data=json.load(f)
print(data)
print(data[\'age\'])
反序列化的结果:
(3)pickle序列化:
import pickle def func_mini(name): print("hello",name) f=open(\'text.txt\',\'rb\') #data=pickle.loads(f.read()) data=pickle.load(f) print(data) print(data["func"](\'lhy\')) f.close()
序列化的结果:
在text.txt文件中存入以下内容:
(4)pickle反序列化:
import pickle def func_mini(name): print("hello",name) f=open(\'text.txt\',\'rb\') #data=pickle.loads(f.read()) data=pickle.load(f) print(data) print(data["func"](\'lhy\')) f.close()
反序列化的结果:
Json序列化和pickle序列化用到的方法是完全一样的,不同之处是,json序列化可以用在其它语言中,而pickle序列化只能用在python语言中;json只能处理简单的数据对象,例如:列表、数组、字典等,而pickle可以处理任意数据对象。pickle序列化中文件的读写方式为”rb”,”wb”,json序列化中文件的读写模式即为“r”,”w”。
以上是关于json和pickle的序列化与反序列化的主要内容,如果未能解决你的问题,请参考以下文章