Python基础知识之json&pickle模块,,json & pic
Python基础知识之json&pickle模块,,json & pic
json & pickle模块
json模块:只适用于简单的数据类型,是一种跨平台的模块。
假设我们有了一段数据是这样定义的:
info = { ‘name‘:‘alex‘, ‘age‘:22}
对于这种简单的数据类型,我们可以直接使用Json来进行数据的序列化和反序列化:序列化dumps:
import jsonf = open("test.text","wb")f.write(json.dumps(info))f.close()
同样的,我们可以使用dump方法来代替dumps方法:只需要将f.write(json.dumps(info))
替换成json.dump(info,f)就可以了。
反序列化loads:
import jsonf = open("test.txt","rb")data = json.loads(f.read())
同样的,我们可以使用load方法来代替loads方法:
只需要将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:
import picklef = open("test.text","wb")f.write(json.pickle(info))f.close()
同样的,我们可以使用dump方法来代替dumps方法:只需要将f.write(pickle.dumps(info))
替换成pickle.dump(info,f)就可以了。
反序列化loads:
import pickledef sayhi(name): print("hi"+name)f = open("test.txt","rb")data = pickle.loads(f.read())
同样的,我们可以使用load方法来代替loads方法:
只需要将f.write(picklejson.dumps(info))
替换成pickle.dump(info,f)就可以了。
需要注意的是,在反序列话的时候,需要先重新定义sayhi()函数。
注意事项:
在使用json模块和pickle模块序列化和反序列化数据的时候采取的是一dump一load的原则,即只dump一份同时也只load一份。
Python基础知识之json&pickle模块
评论关闭