關(guān)于python的對象序列化介紹
對象:是抽象的概念 如列表 元組 字典 集合 皆為對象
序列化:一種方法。目的:把對象存儲在磁盤上(即,將對象轉(zhuǎn)換為字節(jié)數(shù)據(jù)/字符數(shù)據(jù))。
這一過程我們借助序列化這一方法實現(xiàn)。
為什么需要序列化和反序列化這一操作呢?
1.便于存儲。序列化過程將文本信息轉(zhuǎn)變?yōu)槎M制數(shù)據(jù)流。信息就容易存儲在硬盤之中,當需要讀取文件的時候,從硬盤中讀取數(shù)據(jù),然后再將其反序列化便可以得到原始的數(shù)據(jù)。在Python程序運行中得到了一些字符串、列表、字典等數(shù)據(jù),想要長久的保存下來,方便以后使用,而不是簡單的放入內(nèi)存中關(guān)機斷電就丟失數(shù)據(jù)。
2.便于傳輸。當兩個進程在進行遠程通信時,彼此可以發(fā)送各種類型的數(shù)據(jù)。無論是何種類型的數(shù)據(jù),都會以二進制序列的形式在網(wǎng)絡(luò)上傳送。發(fā)送方需要把這個對象轉(zhuǎn)換為字節(jié)序列,在能在網(wǎng)絡(luò)上傳輸;接收方則需要把字節(jié)序列在恢復為對象。
兩個模塊實現(xiàn)序列化
1.pickle模塊
pickle模塊實現(xiàn)了基本的數(shù)據(jù)序列化和反序列化。通過pickle模塊的序列化操作我們能夠?qū)⒊绦蛑羞\行的對象信息保存到文件中去,永久存儲;通過pickle模塊的反序列化操作,我們能夠從文件中創(chuàng)建上一次程序保存的對象。
pickle模塊中的四個方法:dumps dump loads load
#dumps將對象序列化為字節(jié)數(shù)據(jù) >>> import pickle >>> ls = [1,2,3] >>> data = pickle.dumps(ls) >>> data b'\x80\x04\x95\x0b\x00\x00\x00\x00\x00\x00\x00]\x94(K\x01K\x02K\x03e.' >>> f=open("a.txt",mode="wb") >>> f.write(data) 22 >>> f.close() >>> f=open("a.txt",mode="rb") >>> f.read() b'\x80\x04\x95\x0b\x00\x00\x00\x00\x00\x00\x00]\x94(K\x01K\x02K\x03e.' >>> f.close() #dump將對象序列化為字節(jié)數(shù)據(jù)并且保存到file文件中 >>> ls=[2,3,4] >>> pickle.dump(ls,open("a.txt",mode="wb")) >>> f=open("a.txt",mode="rb") >>> f.read() b'\x80\x04\x95\x0b\x00\x00\x00\x00\x00\x00\x00]\x94(K\x02K\x03K\x04e.' #loads將字節(jié)數(shù)據(jù)反序列化為對象 >>> f =open("a.txt","rb") >>> show = f.read() >>> show b'\x80\x04\x95\x0f\x00\x00\x00\x00\x00\x00\x00]\x94(K\x01K\x02K\x03K\x04K\x05e.' >>> show=pickle.loads(show) >>> show [1, 2, 3, 4, 5] >>> f.close() #load將file中的字節(jié)數(shù)據(jù)反序列化為對象 >>> pickle.load(open("a.txt","rb")) [1, 2, 3, 4, 5]
2.json模塊
json模塊是將對象序列化為字符數(shù)據(jù),json模塊一樣有dumps dump loads load方法,注意:json模塊一般是用來序列化字典對象
#dumps方法 >>> import json >>> d={"usename":"zhangsan","age":17} >>> json.dumps(d) '{"usename": "zhangsan", "age": 17}' >>> s=json.dumps(d) >>> f=open("a.txt","wt") >>> f.write(s) 34 >>> f.close() #loads方法 >>> f=open("a.txt","rt") >>> ss = f.read() >>> ss '{"usename": "zhangsan", "age": 17}' >>> json.loads(ss) {'usename': 'zhangsan', 'age': 17} >>> dd = json.loads(ss) >>> dd {'usename': 'zhangsan', 'age': 17} >>> f.close()
到此這篇關(guān)于關(guān)于python的對象序列化介紹的文章就介紹到這了,更多相關(guān)python對象序列化內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
在Heroku云平臺上部署Python的Django框架的教程
這篇文章主要介紹了在Heroku云平臺上部署Python的Django框架的教程,Heroku云平臺使用了Git版本控制系統(tǒng),所以本教程主要提供了配置所需要的Git腳本,需要的朋友可以參考下2015-04-04Python如何從txt文件中提取特定數(shù)據(jù)
這篇文章主要給大家介紹了關(guān)于Python如何從txt文件中提取特定數(shù)據(jù)的相關(guān)資料,有時我們會遇到需要按行讀取文本的情況,我們要讀取txt文件獲得數(shù)據(jù),需要的朋友可以參考下2023-08-08Python實現(xiàn)去除列表中重復元素的方法小結(jié)【4種方法】
這篇文章主要介紹了Python實現(xiàn)去除列表中重復元素的方法,結(jié)合實例形式總結(jié)分析了Python列表去重的4種實現(xiàn)方法,涉及Python針對列表的遍歷、判斷、排序等相關(guān)操作技巧,需要的朋友可以參考下2018-04-04