在機器學習中,我們常常需要把訓練好的模型儲存起來,這樣在進行決策時直接將模型讀出,而不需要重新訓練模型,這樣就大大節約了時間。python提供的pickle模組就很好地解決了這個問題,它可以序列化物件並儲存到磁碟中,並在需要的時候讀取出來,任何物件都可以執行序列化操作。
(1)open(path, mode)
功能:以mode方式通過path開啟檔案/
引數:』w』和』r』的區別:
當mode為『w』時,如果開啟的檔案原來有資訊,則會先清空原來的資訊;當mode為『w』時,如果開啟的檔案原來有資訊,不會影響原來的資訊,而是在最後面繼續寫。
(2)file.close()
功能:關閉檔案
注意:當通過open()方式開啟檔案時,在對檔案處理完成之後一定要及時關閉檔案。
(1)pickle.dump(obj, file, [,protocol])
功能:將obj物件序列化存入已經開啟的file中。
引數:
obj想要序列化的obj物件。
file:檔名稱。
protocol:序列化使用的協議。如果該項省略,則預設為3(de****t_protocol),即支援python3.0以上版本。如果為負值或highest_protocol,則使用最高的協議版本。
(2)pickle.load(file)
功能:將file中的物件序列化讀出。
引數:
file:檔名稱
(3)pickle.dumps(obj[, protocol])
功能:將obj物件序列化為string形式,而不是存入檔案中。
引數:
obj:想要序列化的obj物件。
protocal:序列化使用的協議。如果該項省略,則預設為3(de****t_protocol),即支援python3.0以上版本。如果為負值或highest_protocol,則使用最高的協議版本。
(4)pickle.loads(string)
功能:從string中讀出序列化前的obj物件。
引數:
string:檔名稱。
【注】 dump() 與 load() 相比 dumps() 和 loads() 還有另一種能力:dump()函式能乙個接著乙個地將幾個物件序列化儲存到同乙個檔案中,隨後呼叫load()來以同樣的順序反序列化讀出這些物件。
(1)調包和資料初始化
import pickle as pkl
dataset =
data =[3
,5,2
]
(2)實現乙個obj的序列化
i)使用 pkl.dump() 和 pkl.load(),即儲存到檔案中再讀出
#只儲存乙個物件到檔案中
f =open
("data.txt"
,"wb"
)pkl.dump(dataset, f)
f.close(
)f =
open
("data.txt"
,"rb"
)a = pkl.load(f)
f.close(
)print
(a)
output:
ii)使用 pkl.dumps() 和 pkl.loads(),即轉化成string
a = pkl.dumps(dataset)
print
(pkl.loads(a)
)
output:
(3)實現多個obj的序列化
使用 pkl.dump() 和 pkl.load(),即儲存到檔案中再讀出
f =
open
("data.txt"
,"wb"
)pkl.dump(dataset, f, pkl.highest_protocol)
pkl.dump(data, f, pkl.highest_protocol)
f.close(
)f =
open
("data.txt"
,"rb"
)a = pkl.load(f)
b = pkl.load(f)
f.close(
)print
(a,'\n'
, b)
output:
[3, 5, 2]
Python序列化與反序列化pickle用法例項
要將python物件作為乙個檔案的形式儲存到磁碟,就叫序列化 當我們需要用到這個這物件,再從磁碟載入這個物件,就叫反序列化 python自帶的pickle可以幫我們實現,pickle這個單詞是鹹菜的意思,鹹菜耐儲存,是不是很形象呀?物件的儲存分為兩步 1.將物件在記憶體中的資料抓取取來,轉換成乙個有...
python 實用pickle序列化
儲存資料結構到乙個檔案中稱為序列化。相json這樣的格式需要定製的序列化資料的轉換器。python提供了pickle模組以特殊的二進位制格式儲存和恢復資料物件。還記得json解析datetime物件時出現問題?但對於pickle就不存在問題 import pickle import diatomit...
Python序列化 pickle和json
序列化 serialization 將物件的狀態資訊轉換為可以儲存或傳輸的形式的過程。在序列化期間,物件將其當前狀態寫入到臨時或永續性儲存區。以後,可以通過從儲存區中讀取或反序列化物件的狀態,重新建立該物件。變數從記憶體中變成可儲存或傳輸的過程稱之為序列化,序列化之後,就可以把序列化後的內容寫入磁碟...