python序列化pickle模組入門

2021-10-01 07:55:38 字數 2505 閱讀 4222

在機器學習中,我們常常需要把訓練好的模型儲存起來,這樣在進行決策時直接將模型讀出,而不需要重新訓練模型,這樣就大大節約了時間。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 將物件的狀態資訊轉換為可以儲存或傳輸的形式的過程。在序列化期間,物件將其當前狀態寫入到臨時或永續性儲存區。以後,可以通過從儲存區中讀取或反序列化物件的狀態,重新建立該物件。變數從記憶體中變成可儲存或傳輸的過程稱之為序列化,序列化之後,就可以把序列化後的內容寫入磁碟...