Python 之 cPickle 實現 檔案存取

來源:互聯網
上載者:User

標籤:python   dump   load   pickle   cpickle   

電腦的記憶體中儲存的是二進位的序列 (當然,在Linux眼中,是文字資料流)。我們可以直接將某個對象所對應位置的資料抓取下來,轉換成文字資料流 (這個過程叫做serialize),然後將文字資料流存入到檔案中。由於Python在建立對象時,要參考對象的類定義,所以當我們從文本中讀取對象時,必須在手邊要有該對象的類定義,才能懂得如何去重建這一對象。從檔案讀取時,對於Python的內建(built-in)對象 (比如說整數、詞典、表等等),由於其類定義已經載入記憶體,所以不需要我們再在程式中定義類。但對於使用者自行定義的對象,就必須要先定義類,然後才能從檔案中載入對象。

在python中,一般可以使用pickle類來進行python對象的序列化,而cPickle提供了一個更快速簡單的介面,如python文檔所說的:“cPickle -- A faster pickle”。

cPickle可以對任意一種類型的python對象進行序列化操作,比如list,dict,甚至是一個類的對象等。而所謂的序列化,我的粗淺的理解就是為了能夠完整的儲存並能夠完全可逆的恢複。在cPickle中,主要有四個函數可以做這一工作,下面使用例子來介紹。

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"))
同dump一樣,這裡需要使用open函數開啟本地的一個檔案,並指定“讀”操作


3. dumps:將python對象序列化儲存到一個字串變數中。

>>> data_string = cPickle.dumps(data)


4. loads:從字串變數中載入python對象
>>> data = cPickle.loads(data_string)


【源碼樣本】

import h5pyimport cPickle#data_path = 'F:\\20150727_1010\\FEAT_Name.mat'data_path = 'F:\\wfpdm\\20150727_1010\\FEAT_Name.mat'#data_path = 'H:\\wfpdm\\20150727_1010\\FEAT_Name.mat'root_path = "F:\\wfpdm\\20150727_1010\\"#root_path = "H:\\wfpdm\\20150727_1010\\"myfile=h5py.File(data_path,'r')Data_Set = [myfile[element[0]][:].T for element in myfile['FEAT_Name']]#data = [myfile[element[0]][:].T for element in myfile['FEAT_Name']]#print data[0].shape #print data[1].shapeprint Data_Set[0].shapemyfile.close()filename='Tst.pkl' fid = open(root_path+filename, 'wb')cPickle.dump(Data_Set,fid)fid.close()fim = open(root_path+filename,"rb")loaddata = cPickle.load(fim)fim.close()print loaddata[0].shape


著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

Python 之 cPickle 實現 檔案存取

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.