json&pickle模塊shelve模塊
阿新 • • 發佈:2017-11-03
blog mps highlight 滿足 函數 true spa pypy open
-
json
在不同的編程語言之間傳遞對象
1 dic = {‘name‘: ‘alvin‘, ‘age‘: 23, ‘sex‘: ‘male‘} 2 print(type(dic)) # <class ‘dict‘> 3 4 j = json.dumps(dic) 5 print(type(j)) # <class ‘str‘> 6 7 f = open(‘序列化對象‘, ‘w‘) 8 f.write(j) # -------------------等價於json.dump(dic,f) 9 f.close() 10 # -----------------------------反序列化<br>11 import json 12 13 f = open(‘序列化對象‘) 14 data = json.loads(f.read()) # 等價於data=json.load(f) 15 16 import json 17 #dct="{‘1‘:111}"#json 不認單引號 18 #dct=str({"1":111})#報錯,因為生成的數據還是單引號:{‘one‘: 1} 19 20 dct=‘{"1":"111"}‘ 21 print(json.loads(dct)) 22 23 #conclusion: 24 # 無論數據是怎樣創建的,只要滿足json格式,就可以json.loads出來,不一定非要dumps的數據才能loads
-
pickle
pickle是python自己的序列化,想序列化什麽就序列化什麽,不像json有限制。
import pickle dic = {‘name‘: ‘alvin‘, ‘age‘: 23, ‘sex‘: ‘male‘} print(type(dic)) # <class ‘dict‘> j = pickle.dumps(dic) print(type(j)) # <class ‘bytes‘> f = open(‘序列化對象_pickle‘, ‘wb‘) # 註意是w是寫入str,wb是寫入bytes,j是‘bytes‘ f.write(j) # -------------------等價於pickle.dump(dic,f) f.close() # -------------------------反序列化 import pickle f = open(‘序列化對象_pickle‘, ‘rb‘) data = pickle.loads(f.read()) # 等價於data=pickle.load(f) print(data[‘age‘])
-
shelve模塊
shelve模塊比pickle模塊簡單,只有一個open函數,返回類似字典的對象,可讀可寫;key必須為字符串,而值可以是python所支持的數據類型
import shelve f=shelve.open(r‘sheve.txt‘) # f[‘stu1_info‘]={‘name‘:‘egon‘,‘age‘:18,‘hobby‘:[‘piao‘,‘smoking‘,‘drinking‘]} # f[‘stu2_info‘]={‘name‘:‘gangdan‘,‘age‘:53} # f[‘school_info‘]={‘website‘:‘http://www.pypy.org‘,‘city‘:‘beijing‘} print(f[‘stu1_info‘][‘hobby‘]) f.close()
json&pickle模塊shelve模塊