Python學習(四)cPickle的用法
阿新 • • 發佈:2019-02-12
python中有兩個類似的:pickle與cPickle;兩者的關係:“cPickle – A faster pickle”
pickle模組中的兩個主要函式是dump()和load()。dump()函式接受一個檔案控制代碼和一個數據物件作為引數,把資料物件以特定的格式儲存到給定的檔案中。當我們使用load()函式從檔案中取出已儲存的物件時,pickle知道如何恢復這些物件到它們本來的格式。
cPickle可以對任意一種型別的python物件進行序列化操作,比如list,dict,甚至是一個類的物件等。而所謂的序列化,我的粗淺的理解就是為了能夠完整的儲存並能夠完全可逆的恢復。在cPickle中,主要有四個函式可以做這一工作,下面使用例子來介紹。
一、dump: 將python物件序列化儲存到本地的檔案。
>>> import cPickle
>>> data = range(1000)
>>> cPickle.dump(data,open("test\\data.pkl","wb"))
dump函式需要指定兩個引數,第一個是需要序列化的python物件名稱,第二個是本地的檔案,需要注意的是,在這裡需要使用open函式開啟一個檔案,並指定“寫”操作。
二、 load:載入本地檔案,恢復python物件
>>> data = cPickle.load(open("test\\data.pkl","rb"))
同dump一樣,這裡需要使用open函式開啟本地的一個檔案,並指定“讀”操作
三、 dumps:將python物件序列化儲存到一個字串變數中
>>> data_string = cPickle.dumps(data)
四、 loads:從字串變數中載入python物件
>>> data = cPickle.loads(data_string)
例子:
# -*- coding: utf-8 -*-
import pickle
# 也可以這樣:
# import cPickle as pickle
obj = {"a": 1, "b": 2, "c": 3}
# 將 obj 持久化儲存到檔案 tmp.txt 中
pickle.dump(obj, open("tmp.txt" , "w"))
# do something else ...
# 從 tmp.txt 中讀取並恢復 obj 物件
obj2 = pickle.load(open("tmp.txt", "r"))
print obj2
例子:神經網路中模型引數的儲存
if best_accuracy<val_accuracy:
best_accuracy = val_accuracy
cPickle.dump(model,open("./model.pkl","wb"))