python 序列化_python之序列化
什么叫序列化?
序列化是指把內存里的數據類型轉變成字符串,以使其能存儲到硬盤或通過網絡傳輸到遠程,因為硬盤或網絡傳輸時只能接受bytes。
把字符轉換成內存數據類型,叫反序列化。
為什么要序列化?
你打游戲過程中,打累了,停下來,關掉游戲、想過2天再玩,2天之后,游戲又從你上次停止的地方繼續運行,你上次游戲的進度肯定保存在硬盤上了,是以何種形式呢?游戲過程中產生的很多臨時數據是不規律的,可能在你關掉游戲時正好有10個列表,3個嵌套字典的數據集合在內存里,需要存下來?你如何存?把列表變成文件里的多行多列形式?那嵌套字典呢?根本沒法存。所以,若是有種辦法可以直接把內存數據存到硬盤上,下次程序再啟動,再從硬盤上讀回來,還是原來的格式的話,那是極好的。
用于序列化的兩個模塊
json,用于字符串 和 python數據類型間進行轉換
pickle,用于python特有的類型 和 python的數據類型間進行轉換
Json模塊提供了四個功能:dumps、dump、loads、load
pickle模塊提供了四個功能:dumps、dump、loads、load
importpickle
data= {'k1':123,'k2':'Hello'}#pickle.dumps 將數據通過特殊的形式轉換位只有python語言認識的字符串
p_str =pickle.dumps(data)print(p_str)#pickle.dump 將數據通過特殊的形式轉換位只有python語言認識的字符串,并寫入文件
with open('D:/result.pk','wb',encoding='utf8') as fp:
pickle.dump(data,fp)importjson#json.dumps 將數據通過特殊的形式轉換位所有程序語言都認識的字符串
j_str =json.dumps(data)print(j_str)#pickle.dump 將數據通過特殊的形式轉換位只有python語言認識的字符串,并寫入文件
with open('D:/result.json','wb',encoding='utf8') as fp:
json.dump(data,fp)
json vs pickle:
JSON:
優點:跨語言、體積小
缺點:只能支持int\str\list\tuple\dict
Pickle:
優點:專為python設計,支持python所有的數據類型
缺點:只能在python中使用,存儲數據占空間大
總結
以上是生活随笔為你收集整理的python 序列化_python之序列化的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python现有两个磁盘文件a和b_有两
- 下一篇: python鼠标拖拽功能_seleniu