1. 程式人生 > >python中的序列化與反序列化

python中的序列化與反序列化

tmp 數據類型 load 一個 port style pick 序列 spa

之前,在學習python時,一直弄不明白pickle和json模塊的序列化和反序例化之間的區別和用法,最近閑來有時間,重新研究了這兩個模塊,也算是基本搞明白他們之中的區別了。

用於序列化的兩個模塊,

  • json,用於字符串 和 python數據類型間進行轉換
  • pickle,用於python特有的類型 和 python的數據類型間進行轉換

Json模塊提供了四個功能:dumps、dump、loads、load

pickle模塊提供了四個功能:dumps、dump、loads、load

看下面這個例子,或許你能明白他們之間的區別

import pickle


data = [aa, 
bb, cc] # dumps 將數據通過特殊的形式轉換為只有python語言認識的字符串 p_str = pickle.dumps(data) print(p_str) # loads 將pickle數據轉換為python的數據結構 mes = pickle.loads(p_str) print(mes) # dump 將數據通過特殊的形式轉換為只有python語言認識的字符串,並寫入文件 with open(tmp.pw,wb) as f: pickle.dump(data,f) # load 從數據文件中讀取數據,並轉換為python的數據結構 with open(
tmp.pw,rb) as f: print(pickle.load(f))

json和pickle模塊中的dump和load操作其實就是對數據進行編碼和解碼的處理

  • 編碼:把一個Python對象編碼轉換成Json字符串 json.dumps()
  • 解碼:把Json格式字符串解碼轉換成Python對象 json.loads()

python中的序列化與反序列化