json&pickle数据序列化

json   用于字符串和python数据类型间进行转换pickle 用于python特有的类型 和 python的数据类型间进行转换序列化:把字典或者字符串的内存对象 存到硬盘上;反序列化:就是从硬盘上加载出来

json序列化与反序列化

序列化:把字典或者字符串的内存对象 存到硬盘上;import jsoninfo = {        "name" : "aaa",        "age" : 22}f = open("test.text","w",encoding="utf-8")f.write(json.dumps(info))f.close()反序列化:就是从硬盘上加载出来import jsonf = open("test.text","r")data = json.loads(f.read())print(data["age"])print(data)f.close()

pickle序列化和反序列化

序列化:把字典或者字符串的内存对象 存到硬盘上;import pickle#此函数再这里没有实际意义,接着往下看def sayhi(name):        print("hello,",name)info = {        "name" : "bbb",        "age" : 33}f = open("text2.text","wb")f.write(pickle.dumps(info))f.close()反序列化:就是从硬盘上加载出来import picklef = open("text2.text","rb")def sayhi(name):        print("hello22,", name)data = pickle.loads(f.read())print(data) #结果是{'name': 'bbb', 'age': 33}print(data["age"]) #结果是33#运行sayhi 函数,查看显示结果,这里只是表现了一种写代码的方式。sayhi(data["name"]) #结果是hello22, bbbf.close()

pickle序列化2

上边的pickle序列化可以写成:import pickledef sayhi(name):        print("hello,",name)info = {        "name" : "aaa",        "age" : 22,     "aaa" :sayhi}f = open("text2.text","wb")pickle.dump(info,f)     # 完全相同f.write(pickle.dumps(info))f.close()#反序列化:就是从硬盘上加载出来import picklef = open("text2.text","rb")data = pickle.load(f)print(data)print(data["age"])sayhi("name")f.close()

json多次dumps和多次loads

序列化:把字典或者字符串的内存对象 存到硬盘上;import jsoninfo = {        "name" : "aaa",        "age" : 22}f = open("test01.text","w")f.write(json.dumps(info))info["age"] = 30f.write(json.dumps(info))f.close()'''test01.text内容如下:{"name": "aaa", "age": 22}{"name": "aaa", "age": 30}'''反序列化:就是从硬盘上加载出来 ,在这里loads的时候会报错。import jsonf = open("test01.text","r")data = json.loads(f.read())print(data["age"])f.close()当学序列化只dumps一次,在loads就正确了序列化import jsoninfo = {        "name" : "aaa",        "age" : 22}f = open("test01.text","w")#f.write(json.dumps(info))info["age"] = 30f.write(json.dumps(info))f.close()#反序列化import jsonf = open("test01.text","r")data = json.loads(f.read())print(data["age"])  #结果是:30f.close()

'''

总结:
json可以dumps多次,loads的时候报错;同时也不可以loads多次;
要想loads多次,就在dumps的时候dumps成不同的文件,laods不同文件。
'''

pickle多次dumps和多次loads

序列化import pickleinfo = {        "name" : "aaa",        "age" : 22}f = open("test001.text","wb")f.write(pickle.dumps(info))info["age"] = 30f.write(pickle.dumps(info))f.close()反序列化f = open("test001.text","rb")data = pickle.loads(f.read())print(data["age"])  #结果是:22f.close()

'''

总结:
pickle可以dumps多次,loads的时候不报错,但得出的结果是第一次dumps的内容;同时也不可以loads多次;
要想loads多次,就在dumps的时候dumps成不同的文件,laods不同文件。
'''


总结:json   用于字符串和python数据类型间进行转换pickle 用于python特有的类型 和 python的数据类型间进行转换序列化:把字典或者字符串的内存对象 存到硬盘上;反序列化:就是从硬盘上加载出来当json dumps多次的时候,loads的时候报错;同时也不可以loads多次;要想loads多次,就在dumps的时候dumps成不同的文件,laods不同文件。当pickle dumps多次的时候,loads的时候不报错,但得出的结果是第一次dumps的内容;同时也不可以loads多次;要想loads多次,就在dumps的时候dumps成不同的文件,laods不同文件。