python 實用pickle序列化

2022-03-06 12:12:32 字數 1199 閱讀 3666

儲存資料結構到乙個檔案中稱為序列化。相json這樣的格式需要定製的序列化資料的轉換器。python提供了pickle模組以特殊的二進位制格式儲存和恢復資料物件。

還記得json解析datetime物件時出現問題?但對於pickle就不存在問題:

>>> import

pickle

>>> import

diatomite

>>> now1 =datetime.datetime.utcnow()

>>> pickled =pickle.dumps(now1)

>>> now2 =pickle.loads(pickled)

>>>now1

datetime.datetime(2017,3,23,22,20,1970)

>>> now2

pickle 同樣也適用於自己定義的類和物件。現在,我們定義乙個簡單的類 tiny,當其物件強制轉換為字串時會返回『tiny』:

>>> import

pickle

>>> class

tiny():

...

def__str__

(self):

...

return

'tiny

'...

>>> obj1 =tiny()

>>>obj1

<__main__.tiny object at 0x10076ed10>

>>>str(obj1)

'tiny

'>>> pickled =pickle.dumps(obj1)

>>>pickledb'

\x80\x03c__main__\ntiny\nq\x00)\x81q\x01.

'>>> obj2 =pickle.loads(pickled)

>>>obj2

<__main__.tinyobject at 0x10076e550>

>>>str(obj2)

'tiny

'

pickled是從物件obj1轉換來的序列化二進位制字串。然後再把字串還遠成物件obj1的副本obj2.使用函式dump()序列化資料到檔案,而函式load()用作反序列化。

備註:因為pickle會建立python物件,前面提到的安全問題也同樣會發生,不要對你不信任的檔案做反序列化。

Pythoy Json與pickle資料序列化

json 模組提供了四個方法 dumps dump loads load dumps和dump 序列化方法 序列化成字串 json.dumps json obj 序列化字串到檔案中 json.dump json obj,write file loads和load 反序列化方法 反序列化成物件 jso...

Python物件 Pickle醃製

在python中如果我們有一些物件需要永續性儲存,並且不丟失我們這個物件的型別與資料,我們則需要將這些物件進行序列化,序列化之後,需要使用的時候,我們再恢復為原來的資料。序列化的這種過程,我們稱其為pickle 醃製 恢復的過程稱為反的pickle 將物件進行pickle有兩種形式,一種是將物件序列...

Python 學習筆記 pickle

pickle是python語言的乙個標準模組,安裝python後已包含pickle庫,不需要單獨再安裝。注意引包的時候,python2是cpickle庫,python3是pickle庫。pickle模組實現了基本的資料序列化和反序列化。通過pickle模組的序列化操作我們能夠將程式中執行的物件資訊儲...