儲存資料結構到乙個檔案中稱為序列化。相json這樣的格式需要定製的序列化資料的轉換器。python提供了pickle模組以特殊的二進位制格式儲存和恢復資料物件。
還記得json解析datetime物件時出現問題?但對於pickle就不存在問題:
>>> importpickle
>>> 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』:
>>> importpickle
>>> 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模組的序列化操作我們能夠將程式中執行的物件資訊儲...