python序列化 pickle和json

2021-09-28 10:34:10 字數 977 閱讀 3380

提下序列化的知識點,目的有兩個:

1. 儲存或者傳輸抽象的**物件(這個物件可以是乙個類,乙個字典等等,這些事物無法脫離py檔案單獨存在,所以我們統一制定乙個統一編碼標準將其轉為二進位制位元組,到用的時候再解碼)

2. 持久化儲存,我們知道有些檔案儲存是以某種編碼形式存在的;換句話說,換台機器用不同的編碼格式,該檔案的二進位制位元組格式完全不同。所以我們需要有乙個統一的編碼和解碼方法將檔案或者物件儲存起來,以便於交流。

從上面兩點我們可以推測出,既然序列化是著重於儲存的,所以估計是做了記憶體優化的。比如乙個物件在系統中占用了10m空間,將其序列化後,占用的空間應該不到10m,當然這是推測~

與二進位制序列化不同,json是文字序列化,其可以在不同程式語言之間做互動,且序列化後可以直接閱讀。這裡不多做介紹。

pickle.dump用於序列化,即將物件轉為統一格式的二進位製碼:

# -*- coding: utf-8 -*- 

import pickle

if __name__ == '__main__':

dic =

# 將dic物件序列化至f檔案中

with open('pickle_example.pickle', 'wb') as f:

pickle.dump(dic, f)

f.close()

pickle.load用於發序列化,將二進位製碼解碼為物件:

# -*- coding: utf-8 -*- 

import pickle

if __name__ == '__main__':

# 將f檔案序列化

with open('pickle_example.pickle', 'rb') as f:

dic = pickle.load(f)

print (type(dic))

print (dic)

輸出為:

Python序列化與反序列化pickle用法例項

要將python物件作為乙個檔案的形式儲存到磁碟,就叫序列化 當我們需要用到這個這物件,再從磁碟載入這個物件,就叫反序列化 python自帶的pickle可以幫我們實現,pickle這個單詞是鹹菜的意思,鹹菜耐儲存,是不是很形象呀?物件的儲存分為兩步 1.將物件在記憶體中的資料抓取取來,轉換成乙個有...

python 實用pickle序列化

儲存資料結構到乙個檔案中稱為序列化。相json這樣的格式需要定製的序列化資料的轉換器。python提供了pickle模組以特殊的二進位制格式儲存和恢復資料物件。還記得json解析datetime物件時出現問題?但對於pickle就不存在問題 import pickle import diatomit...

Python序列化 pickle和json

序列化 serialization 將物件的狀態資訊轉換為可以儲存或傳輸的形式的過程。在序列化期間,物件將其當前狀態寫入到臨時或永續性儲存區。以後,可以通過從儲存區中讀取或反序列化物件的狀態,重新建立該物件。變數從記憶體中變成可儲存或傳輸的過程稱之為序列化,序列化之後,就可以把序列化後的內容寫入磁碟...