学习python第十一天,函数3 函数的序列化和反序列化

it2022-05-07  7

我们把变量从内存中变成可存储或传输的过程称之为序列化,序列化之后,就可以把序列化后的内容写入磁盘,或者通过网络传输到别的机器上。 反过来,把变量内容从序列化的对象重新读到内存里称之为反序列化,即unpickling。 一、存文件,序列化 info = { 'name':'alex', 'age':22 } f =open("test.text","w")#存文件 f.write(str(info)) f.close()

   

 

二、取文件 反序列化 f =open("test.text","r")#以写的形式打开存文件 data=f.read() f.close() print(data)

  

  三、如果要把字符串变字典单独取age值 1 data=eval(f.read()) 2 print(data['age'])

 

四、使用模块序列化,高级版的序列化json+dumps import json f =open("test.text","w")#存文件,序列化 #print(json.dumps(info)) f.write(json.dumps(info)) f.close()

  

 

四-(1)使用模块序列化,序列化两次json+dumps import json info = { 'name':'alex', 'age':22 } f =open("test.text","w")#存文件,序列化 #print(json.dumps(info)) f.write(json.dumps(info)) info['age']=21 #修改age f.write(json.dumps(info)) f.close()

 使用模块序反列化,没办法反序列化两个字典

五、使用模块高级版的反序列化json+ loads import json f =open("test.text","r")#取文件,反序列化 #print(json.dumps(info)) data=json.loads(f.read()) print(data['age']) f.close()

  

  六,处理更加复杂的数据的序列化使用picke+dumps+loads

 

import pickle def sayhi(name): print("hello,",name) info = { 'name':'alex', 'age':22, 'func':sayhi } f =open("test.text","wb")#默认为二进制需改wb f.write(pickle.dumps(info)) print(pickle.dumps(info)) f.close()

  

七,处理更加复杂的数据的序列化使用picke+dump+loads 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()

 

转载于:https://www.cnblogs.com/buildydream/p/10171938.html


最新回复(0)