python学习第四章之json与pickle数据序列化

mac2022-06-30  16

1.终于学到json了,简直是万分期待

2.json序列化:json.dumps()

 json反序列化:json.loads()

json对字典、列表、字符串起作用,可以在不同语言间进行交互。

pickle只支持python语言,Java只认识json,一般是dump一次,对应的load一次

3.(1)使用json将字典的一个内容存入文本中,

import json info={ 'name':'alex', 'age':22 } f=open("test.text","w") print(json.dumps(info)) f.write(json.dumps(info)) f.close()

 运行后,字典中的内容已经写入到test.text文本中,这时如果要读取改文本中的内容,就要用到反序列化:

import json f=open("test.text","r") data=json.loads(f.read()) print(data['age'])

 这时读取到的age为22

(2)如果在字典中有函数的内存地址,这时就要用到pickle,其他与json一样

import pickle def sayhi(name): print("hello",name) info={ 'name':'alex', 'age':22, 'func':sayhi } f=open("test.text","wb") print(pickle.dumps(info)) f.write(pickle.dumps(info)) f.close()

 反序列为:

import pickle def sayhi(name): print("hello", name) print("hello2",name) f=open("test.text","rb") data=pickle.loads(f.read()) print(data['func']("wu"))

 (3)而在pickle的序列中,f.write(pickle.dumps(info))与pickle.dump(info,f)是一样的,那么也可以写成如下形式

import pickle def sayhi(name): print("hello",name) info={ 'name':'alex', 'age':22, 'func':sayhi } f=open("test.text","wb") pickle.dump(info,f) #与f.write(pickle.dumps(info))一样 f.close()

 同理反序列化也一样,

import pickle def sayhi(name): print("hello", name) print("hello2",name) f=open("test.text","rb") data=pickle.load(f) #data=pickle.loads(f.read()) print(data['func']("wu"))

 好的,完毕

转载于:https://www.cnblogs.com/wuxiaoru/p/11384575.html

相关资源:Python for Informatics 第11章之正则表达式(四)
最新回复(0)