20201214_134_使用pickle實現序列化和反序列化
阿新 • • 發佈:2020-12-19
技術標籤:學習筆記_Python程式設計基礎_Pycharm版
使用 pickle 序列化
Python 中,一切皆物件,物件本質上就是一個“儲存資料的記憶體塊”。有時候,我們需要將“記憶體塊的資料”儲存到硬碟上,或者通過網路傳輸到其他的計算機上。這時候,就需要用到“物件的序列化和反序列化”(二進位制序列)。
物件的序列化機制廣泛的應用在分散式、並行系統上。序列化指的是:將物件轉化成“序列化”資料形式,儲存到硬碟或通過網路傳輸到其他地方。反序列化是指相反的過程,將讀取到的“序列化資料”轉化成物件。
我們可以使用 pickle 模組中的函式,實現序列化和反序列操作。
實現序列化和反序列化的方法語法是:
pickle.dump(obj, file)
obj 就是要被序列化的物件,file 指的是儲存的檔案
pickle.load(file)
從 file 讀取資料,反序列化成物件
【例1】將物件序列化到檔案中
import pickle
with open(r'f:\data.dat','wb') as f: # 字尾用什麼都行(例如.data、.tim等等),不要也可以,關鍵是反序列化的時候用與序列化對應的反序列演算法解讀就行了。
a1 = 'Tuesday'
a2 = 678
a3 = [33, 44, 55]
pickle.dump(a1, f)
pickle.dump(a2, f)
pickle.dump(a3, f)
執行結果:
【例2】將獲得的資料反序列化成物件
import pickle
with open(r'f:\data.dat', 'rb') as f:
a1 = pickle.load(f)
a2 = pickle.load(f)
a3 = pickle.load(f)
print(a1)
print(a2)
print(a3)
執行結果:
注:序列檔案形成的時候,序列化幾次,就最多可以反序列化幾次。並且第幾次序列化存入的資訊與第幾次反序列化解碼出來的資訊相對應。
ps:老師這課中還講了,程式還有一種編寫風格,將形式相同的程式碼放在同一行,之間用“;”隔開,這樣也能讓直譯器辨識。如下例:
import pickle
with open(r'f:\data.dat', 'rb') as f:
a1 = pickle.load(f);a2 = pickle.load(f);a3 = pickle.load(f)
print(a1);print(a2);print(a3)