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持久化
- Python標準庫分享之儲存物件 (pickle包,cPickle包)Python物件
- JSON和pickle模組JSON
- Python3 pickle模組的使用詳解Python
- python 序列化pickle&json模組PythonJSON
- Nodejs核心模組之net和httpNodeJSHTTP
- 序列化和反序列化pickle和json 模組JSON
- Python之time模組詳解Python
- Python模組之urllib模組Python
- python模組之collections模組Python
- pickle模組 collections模組在物件導向中的應用物件
- python之模組Python
- python之logging日誌模組詳解Python
- Python picklePython
- python模組之configparserPython
- python模組之hashlibPython
- python之shutil模組Python
- python–模組之基本Python
- Python模組之jsonPythonJSON
- node 核心模組學習之 Buffer
- 解讀Node核心模組Stream系列一(Writable和pipe)
- python–模組之random隨機數模組Pythonrandom隨機
- python–模組之os操作檔案模組Python
- python模組詳解Python
- [kubernetes系列]HPA模組深度講解
- Python學習之模組Python
- Python基礎之模組Python
- Zepto核心模組之工具方法拾遺
- Python3內建模組之json編碼解碼方法講解PythonJSON
- Python基礎之錯誤和異常講解Python
- Linux核心模組Linux
- Python包和模組管理Python
- python模組之os.pathPython
- Python學習之常用模組Python
- Python學習之 datetime模組Python
- python基礎 之 正規表示式和re模組Python
- Python筆記之paramiko模組安裝和使用示例Python筆記
- netlink 是 Go 和核心模組之間優秀的通訊兵Go
- Python之資料序列化(json、pickle、shelve)PythonJSON