cPickle模塊:
在python中,一般可以使用pickle類來進行python對象序列化,而cPickle提供了一個更快速簡單的接口,如python文檔所說:“cPickle - A faster pickle”。
cPickle可以對任意一種類型的python對象進行序列化操作,比如:list, dict,甚至是一個類的對象等。而所謂的序列化,是為了能完整地保存並能夠完全可逆的恢復。在cPickle中,主要有4個函數:
1. dump:將python對象序列化保存到本地的文件
import cPickle data = range(1000) cPickle.dump(data, open("test\\data.pkl", "wb"))
dump函數需要指定兩個參數,第一個是需要序列化的python對象名稱,第二個是本地的文件,需要注意的是,在這里需要使用open函數打開一個文件,並指定“寫”操作。
2. load:載入本地文件,恢復python對象
data = cPickle.load(open("test\\data.pkl", "rb"))
使用open函數打開本地的一個文件,並指定“讀”操作。
3. dumps:將python對象序列化保存到一個字符串變量中
data_string = cPickle.dumps(data)
4. loads:載入字符串,恢復python對象
data = cPickle.loads(data_string)
pickle與cpickle比較:
pickle完全用python來實現的,cpickle用C來實現的,cpickle的速度要比pickle快好多倍。
pickle模塊:
1. pickle.dump(obj, file, [,protocol])
- 含義:pickle.dump(對象,文件,[使用協議])
- 將要持久化的數據“對象”,保存到“文件”中,使用有3種協議,索引0為ASCII,1為舊式二進制,2為新式二進制協議,不同之處在於2要更高效一些。
- 默認dump方法使用0做協議
2. pickle.load(file)
- 含義:pickle.load(文件),將file中的對象序列化讀出。
- 從“文件”中讀取字符串,將他們反序列化轉換為python的數據對象,可以像操作數據類型的這些方法來操作它們;
3. pickle.dumps(obj[, protocol])
- 函數的功能:將obj對象序列化為string形式,而不是存入文件中。
- obj:想要序列化的obj對象。
- protocal:如果該項省略,則默認為0。如果為負值或HIGHEST_PROTOCOL,則使用最高的協議版本。
4. pickle.loads(string)
- 函數的功能:從string中讀出序列化前的obj對象。
- string:文件名稱。
dump() 與 load() 相比 dumps() 和 loads() 還有另一種能力:dump()函數能一個接一個地將幾個對象序列化存儲到同一個文件中,隨后調用load()來以同樣的順序反序列化讀出這些對象。
實例:http://www.mamicode.com/info-detail-2079993.html
