python核心模組之pickle和cPickle講解
pickle模組使用的資料格式是python專用的,並且不同版本不向後相容,同時也不能被其他語言說識別。要和其他語言互動,可以使用內建的json 包使用pickle模組你可以把Python物件直接儲存到檔案,而不需要把他們轉化為字串,也不用底層的檔案訪問操作把它們寫入到一個二進位制檔案裡。 pickle模組會建立一個python語言專用的二進位制格式,你基本上不用考慮任何檔案細節,它會幫你乾淨利落地完成讀寫獨享操作,唯一需要的只是一個合法的檔案控制程式碼。
pickle 主要函式
pickle模組中的兩個主要函式是dump()和load()。dump()函式接受一個檔案控制程式碼和一個資料物件作為引數,把資料物件以特定的格式儲存到給定的檔案中。當我們使用load()函式從檔案中取出已儲存的物件時,pickle知道如何恢復這些物件到它們本來的格式。
dumps()函式執行和dump() 函式相同的序列化,但是與dump不同的dumps並不將轉換後的字串寫入檔案,而是將所得到的轉換後的資料以字串的形式返回。
loads()函式執行和load()函式一樣的反序列化。 loads接受一個字串引數,將字串解碼成為python的資料型別,函式loads和dumps進行的是互逆的操作。
cPickle是pickle得一個更快得C語言編譯版本。
pickle的dump和load相當於java的序列化和反序列化操作
pickle用法示例
#! /usr/local/env python # -*- coding=utf-8 -*- if __name__ == "__main__": import cPickle #序列化到檔案 obj = 123,"abcdedf",["ac",123],{"key":"value","key1":"value1"} print obj #輸出:(123, 'abcdedf', ['ac', 123], {'key1': 'value1', 'key': 'value'}) #r 讀寫許可權 r b 讀寫到二進位制檔案 f = open(r"d:\a.txt","r ") cPickle.dump(obj,f) f.close() f = open(r"d:\a.txt") print cPickle.load(f) #輸出:(123, 'abcdedf', ['ac', 123], {'key1': 'value1', 'key': 'value'}) #序列化到記憶體(字串格式儲存),然後物件可以以任何方式處理如透過網路傳輸 obj1 = cPickle.dumps(obj) print type(obj1) #輸出:<type 'str'> print obj1 #輸出:python專用的儲存格式 obj2 = cPickle.loads(obj1) print type(obj2) #輸出:<type 'tuple'> print obj2 #輸出:(123, 'abcdedf', ['ac', 123], {'key1': 'value1', 'key': 'value'})
當然啦,你dump幾次,也就是需要load幾次,不要希望dump了三次,load給你返回一個list。
參考
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29829936/viewspace-2149211/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Python3內建模組之Pickle和cPickle資料持久化方法小結Python持久化
- pickle和cPickle:Python物件的序列化(下)Python物件
- pickle和cPickle:Python物件的序列化(上)Python物件
- Python模組學習 :pickle, cPickle 物件序列化/反序列化Python物件
- Python標準庫分享之儲存物件 (pickle包,cPickle包)Python物件
- Python3 pickle模組的使用詳解Python
- Python 快速教程(標準庫05):儲存物件 (pickle包,cPickle包)Python物件
- Python序列化模組pickle和json使用和區別PythonJSON
- python 序列化pickle&json模組PythonJSON
- 【python】使用pickle模組將資料永久儲存,pickle.dump()序列化、pickle.load()反序列化例項詳解Python
- Nodejs核心模組之net和httpNodeJSHTTP
- Python3內建模組之json編碼解碼方法講解PythonJSON
- 【dubbo之模組詳講】
- Python之time模組詳解Python
- Python之OS模組詳解Python
- pickle模組 collections模組在物件導向中的應用物件
- python中的pickle功能Python
- python中pickle簡介Python
- Python之Requests模組使用詳解Python
- Python之資料序列化(json、pickle、shelve)PythonJSON
- python模組之collections模組Python
- MyBatis 核心配置講解(上)MyBatis
- 解讀Node核心模組Stream系列一(Writable和pipe)
- pickle 在python 2和python 3中相容性問題Python
- node 核心模組學習之 Buffer
- Python模組之urllib模組Python
- Zepto核心模組之工具方法拾遺
- python–模組之基本Python
- python之shutil模組Python
- 【Python】模組之subprocessPython
- python之time模組Python
- 【Python】模組之fileinputPython
- 【Python】模組之queuePython
- Python 解析配置模組之ConfigParser詳解Python
- Groovy核心類原始碼講解(上)原始碼
- python–模組之random隨機數模組Pythonrandom隨機
- python–模組之os操作檔案模組Python
- Python的defaultdict模組和namedtuple模組Python