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!
推薦閱讀:
- Python3 pickle模塊的使用方法詳細介紹
- Python序列化模塊之pickle與json詳解
- Python常用標準庫詳解(pickle序列化和JSON序列化)
- 老生常談Python中的Pickle庫
- python爬取之json、pickle與shelve庫的深入講解