之前,在學習python時,一直弄不明白pickle和json模塊的序列化和反序例化之間的區別和用法,最近閑來有時間,重新研究了這兩個模塊,也算是基本搞明白他們之中的區別了。
用于序列化的兩個模塊,
- json,用于字符串 和 python數據類型間進行轉換
- pickle,用于python特有的類型 和 python的數據類型間進行轉換
Json模塊提供了四個功能:dumps、dump、loads、load
pickle模塊提供了四個功能:dumps、dump、loads、load
?
看下面這個例子,或許你能明白他們之間的區別
import pickledata = ['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()
?