1. 程式人生 > >python學習筆記(21) 常用模組--序列化模組

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)  #會記錄待持久化物件的修改,但會增加記憶體消耗