python學習筆記(21) 常用模組--序列化模組
序列化——從其他資料型別轉向一個字串資料型別
反序列化——字串到其他資料型別
序列——字串
json #五星
pickle #四星
shelve #py3新增
json #通用的序列化格式
#只有很少的一部分資料型別能通過json轉化成字串
pickle #pickle序列化的內容只有python能理解,且部分反序列化依賴python程式碼
#所有python資料型別都能轉化
shelve #序列化控制代碼,使用控制代碼直接操作,很方便
#
#######################################################
json dumps序列化方法 loads反序列化方法(內部使用元素必須雙引號)
str_d = json.dumps(dic)
dic_d = json.loads(str_d)
可序列化內容:數字 字串 列表 字典 元組(會被轉化成序列)
json.dump(dic,f)
json.load(f) #對檔案操作
json.dump(dic,f,ensure_ascii=False) 加上引數防止中文變bytes型別
#######################################################
pickle命令同上,序列化以後是bytes格式,可以序列化任意資料型別
dump需要用wb格式開啟檔案,load需要用rb格式開啟
可以按順序dump和load,json不行(用dumps和loads加檔案讀寫)
#######################################################
shelve可以直接對檔案控制代碼進行操作
f = shelve.open('file')
f['key'] = {'int':10,'float':9.5}
f.close
f1 = shelve.open('file')
a = f1['key'] #key不存在會報錯
shelve.open('file',flag = 'r') #據說是只讀模式,不讓寫入(然而不能修改,可以寫入)
shelve.open('file',writeback=True) #會記錄待持久化物件的修改,但會增加記憶體消耗