版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/BearKChan/article/details/78808561
json & pickle模块
json模块:只适用于简单的数据类型,是一种跨平台的模块。
假设我们有了一段数据是这样定义的:
info = { 'name':'alex', 'age':22 }
对于这种简单的数据类型,我们可以直接使用
Json
来进行数据的序列化和反序列化:序列化
dumps
:import json f = open("test.text","wb") f.write(json.dumps(info)) f.close()
同样的,我们可以使用
dump
方法来代替dumps
方法:
只需要将f.write(json.dumps(info))
替换成json.dump(info,f)
就可以了。反序列化
loads
:import json f = open("test.txt","rb") data = json.loads(f.read())
同样的,我们可以使用
dump
方法来代替dumps
方法:
只需要将f.write(json.dumps(info))
替换成json.dump(info,f)
就可以了。
pickle模块:能够转换传递复杂的数据类型,是Python特有的一种数据类型。
通过上面的json模块我们发现,json只能传递一些简单的数据类型,如果我们想给
info
添加一个函数呢?def sayhi(name): print("hello2,",name) info = { 'name':'alex', 'age':22 'func':sayhi }
这个时候,就需要使用我们的pickle模块了。
- 序列化
dumps
:
python
import pickle
f = open("test.text","wb")
f.write(json.pickle(info))
f.close()
同样的,我们可以使用dump
方法来代替dumps
方法:
只需要将f.write(pickle.dumps(info))
替换成pickle.dump(info,f)
就可以了。 反序列化
loads
:扫描二维码关注公众号,回复: 4668466 查看本文章import pickle def sayhi(name): print("hi"+name) f = open("test.txt","rb") data = pickle.loads(f.read())
同样的,我们可以使用
dump
方法来代替dumps
方法:
只需要将f.write(picklejson.dumps(info))
替换成pickle.dump(info,f)
就可以了。需要注意的是,在反序列话的时候,需要先重新定义
sayhi()
函数。
- 序列化
注意事项:
在使用json模块和pickle模块序列化和反序列化数据的时候采取的是一dump一load的原则,即只dump一份同时也只load一份。