Python中cPickle


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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM