json&pickle數據序列化

json   用于字符串和python數據類型間進行轉換
pickle 用于python特有的類型 和 python的數據類型間進行轉換序列化:把字典或者字符串的內存對象 存到硬盤上;
反序列化:就是從硬盤上加載出來

json序列化與反序列化

序列化:把字典或者字符串的內存對象 存到硬盤上;
import json
info = {"name" : "aaa","age" : 22
}
f = open("test.text","w",encoding="utf-8")
f.write(json.dumps(info))
f.close()反序列化:就是從硬盤上加載出來
import json
f = 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 pickle
f = 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, bbb
f.close()

pickle序列化2

上邊的pickle序列化可以寫成:
import pickle
def 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 pickle
f = open("text2.text","rb")
data = pickle.load(f)
print(data)
print(data["age"])
sayhi("name")
f.close()

json多次dumps和多次loads

序列化:把字典或者字符串的內存對象 存到硬盤上;
import json
info = {"name" : "aaa","age" : 22
}
f = open("test01.text","w")
f.write(json.dumps(info))
info["age"] = 30
f.write(json.dumps(info))
f.close()
'''
test01.text內容如下:
{"name": "aaa", "age": 22}{"name": "aaa", "age": 30}
'''反序列化:就是從硬盤上加載出來 ,在這里loads的時候會報錯。
import json
f = open("test01.text","r")
data = json.loads(f.read())
print(data["age"])
f.close()當學序列化只dumps一次,在loads就正確了
序列化
import json
info = {"name" : "aaa","age" : 22
}
f = open("test01.text","w")
#f.write(json.dumps(info))
info["age"] = 30
f.write(json.dumps(info))
f.close()
#反序列化
import json
f = open("test01.text","r")
data = json.loads(f.read())
print(data["age"])  #結果是:30
f.close()

'''
總結:
json可以dumps多次,loads的時候報錯;同時也不可以loads多次;
要想loads多次,就在dumps的時候dumps成不同的文件,laods不同文件。
'''

pickle多次dumps和多次loads

序列化
import pickle
info = {"name" : "aaa","age" : 22
}
f = open("test001.text","wb")
f.write(pickle.dumps(info))
info["age"] = 30
f.write(pickle.dumps(info))
f.close()反序列化
f = open("test001.text","rb")
data = pickle.loads(f.read())
print(data["age"])  #結果是:22
f.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不同文件。