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模块

评论关闭