序列化
info = {
'name':'alex',
'age':22
}
f = open("test.txt",'w')
f.write(str(info)) #把一個字典轉換成字符串 從內存存到硬盤的過程叫序列化
f.close()
import json
info = {
'name':'alex',
'age':22
}
f = open("test.txt",'w')
#print(json.dumps(info))
f.write(json.dumps(info)) #把一個字典轉換成字符串 從內存存到硬盤的過程叫序列化
f.close() #序列化dumps 函數不可以序列化 只能處理簡單的跨平臺數據交互
import pickle
def sayhi(name):
print("hello,",name)
info = {
'name':'alex',
'age':22,
'func':sayhi
}
f = open("test.txt",'wb')
#print(pickle.dumps(info))
f.write(pickle.dumps(info)) #pickle可以序列化所有的數據
f.close()
import pickle
def sayhi(name):
print("hello,",name)
info = {
'name':'alex',
'age':22,
'func':sayhi
}
f = open("test.txt","wb")
pickle.dump(info,f) # 等於f.write(pickle.dumps(info))
#pickle.dump(對象,文件)
f.close()
import json
info = {
'name':'alex',
'age':22
}
f = open("test.txt","w")
json.dump(info,f)
info["age"]=21
json.dump(info,f) #一般只dump一次,因爲3.x版本只能load一次,dump多次沒意義
f.close()
反序列化
f = open("test.txt",'r')
data = eval(f.read())
f.close()
print(data['age'])
import json
f = open("test.txt",'r')
data = json.loads(f.read()) #反序列化loads
print(data['age'])
import pickle
def sayhi(name):
print("hello2,",name)
f = open("test.txt",'rb')
data = pickle.loads(f.read()) #反序列化loads pickle只能用在python裏面,java不認
print(data["func"]("alex")) #反序列化只要函數名一樣就可以,序列化的是整個的數據對象
import pickle
def sayhi(name):
print("hello2,",name)
f=open("test.txt",'rb')
data = pickle.load(f) #等於data= pickle.loads(f.read())
print(data["func"]("alex"))
import json
f = open("test.txt",'r')
#data = json.load(f) #等於data= json.loads(f.read()) 會報錯 3.X只能load一次
for line in f:
print(line)