Pickle模塊中的dump()和load()方法簡介

一、簡介

Pickle模塊實現瞭基本的數據序列化與反序列化操作。通過序列化操作,我們可以將程序中運行的對象信息轉化為字節流保存到文件中去,永久存儲在磁盤上。通過反序列化操作,我們可以將文件中字節流數據重新解析為一個python對象。

註:pickle序列化後的字節流數據可讀性差,人一般無法識別。

1.1 為什麼要對數據進行序列化操作?

1.不需要在跑代碼時重新去計算得到數據,事先進行序列化操作保存數據可以節省計算機資源;

2.pkl文件能夠更好的被內存調用,不需要經過數據格式的轉換,因此提高瞭效率;而假如保存為其他格式(如txt、csv文件),那麼數據讀寫速度都不如序列化後的數據。

3.Pickle可以保存多個對象。實驗中,同一數據集下需要保存的內容不止一種,通過pickle可以全部將其保存到一個.pkl文件。

二、pickle.dump(obj, file, protocol)

obj: 要進行序列化的對象,這裡將對象obj保存到文件file中去;
file: file表示保存到的類文件對象,file必須有write()接口,file可以是一個以’w’打開的文件或者是一個StringIO對象,也可以是任何可以實現write()接口的對象;
protocol: 序列化模式,默認是 0(ASCII協議,表示以文本的形式進行序列化),protocol的值還可以是1和2(1和2表示以二進制的形式進行序列化。其中,1是老式的二進制協議;2是新二進制協議)

import pickle
 
# 創建一個字典對象
data = {'a':[1,2,3],'b':'Hello'}
 
# 以二進制寫入方式打開文件,得到文件對象
fw = open('./Mydata.pkl','wb')
 
# 將字典數據存儲為一個pkl文件
pickle.dump(data, fw)
 
# 關閉文件
pickle.close()

序列化後的數據形式:

三、pickle.load(file)

file: 表示上一步序列化之後的文件,這裡進行反序列化操作。

import pickle
 
# 以二進制讀入方式打開文件,得到文件對象
fw = open(r'C:\python數據分析\python基礎\testdata.pkl','rb')
 
# 將字節流數據反序列化為一個字典對象
data = pickle.load(pic2)
 
print(data)

打印出來的數據:

到此這篇關於Pickle模塊中的dump()和load()方法介紹的文章就介紹到這瞭,更多相關Pickle模塊dump()和load()方法內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: