国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網(wǎng)站 > 建站經(jīng)驗(yàn) > 正文

詳解Pyth,on中的序列化與反序列化的使用

2019-11-02 14:29:20
字體:
供稿:網(wǎng)友

   這篇文章主要介紹了詳解Python中的序列化與反序列化的使用,針對pickle和cPickle對象進(jìn)行了探究,需要的朋友可以參考下

  學(xué)習(xí)過marshal模塊用于序列化和反序列化,但marshal的功能比較薄弱,只支持部分內(nèi)置數(shù)據(jù)類型的序列化/反序列化,對于用戶自定義的類型就無能為力,同時marshal不支持自引用(遞歸引用)的對象的序列化。所以直接使用marshal來序列化/反序列化可能不是很方便。還好,python標(biāo)準(zhǔn)庫提供了功能更加強(qiáng)大且更加安全的pickle和cPickle模塊。

  cPickle模塊是使用C語言實(shí)現(xiàn)的,所以在運(yùn)行效率上比pickle要高。但是cPickle模塊中定義的類型不能被繼承(其實(shí)大多數(shù)時候,我們不需要從這些類型中繼承。)。cPickle和pickle的序列化/反序列化規(guī)則是一樣的,我們可以使用pickle序列化一個對象,然后使用cPickle來反序列化。同時,這兩個模塊在處理自引用類型時會變得更加“聰明”,它不會無限制的遞歸序列化自引用對象,對于同一對象的多次引用,它只會序列化一次。例如:

  ?

1 2 3 4 5 6 7 8 import marshal, pickle   list = [1] list.append(list) byt1 = marshal.dumps(list) #出錯, 無限制的遞歸序列化 byt2 = pickle.dumps(list) #No problem

  pickle的序列化規(guī)則

  Python規(guī)范(Python-specific)提供了pickle的序列化規(guī)則。這就不必?fù)?dān)心不同版本的Python之間序列化兼容性問題。默認(rèn)情況下,pickle的序列化是基于文本的,我們可以直接用文本編輯器查看序列化的文本。我們也可以序列成二進(jìn)制格式的數(shù)據(jù),這樣的結(jié)果體積會更小。更詳細(xì)的內(nèi)容,可以參考Python手冊pickle模塊。

  下面就開始使用pickle吧~

  pickle.dump(obj, file[, protocol])

  序列化對象,并將結(jié)果數(shù)據(jù)流寫入到文件對象中。參數(shù)protocol是序列化模式,默認(rèn)值為0,表示以文本的形式序列化。protocol的值還可以是1或2,表示以二進(jìn)制的形式序列化。

  pickle.load(file)

  反序列化對象。將文件中的數(shù)據(jù)解析為一個Python對象。下面通過一個簡單的例子來演示上面兩個方法的使用:

  ?

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 #coding=gbk   import pickle, StringIO   class Person(object):   '''自定義類型。   ''' def __init__(self, name, address): self.name = name self.address = address   def display(self): print 'name:', self.name, 'address:', self.address   jj = Person("JGood", "中國 杭州") jj.display() file = StringIO.StringIO()   pickle.dump(jj, file, 0) #序列化 #print file.getvalue() #打印序列化后的結(jié)果   #del Person #反序列的時候,必
發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 库车县| 大港区| 屏南县| 桐城市| 江城| 越西县| 阜南县| 城市| 铜鼓县| 金秀| 镶黄旗| 梨树县| 汤原县| 菏泽市| 沂源县| 子洲县| 宾阳县| 贵阳市| 社旗县| 临海市| 土默特右旗| 渑池县| 江都市| 封开县| 延庆县| 海盐县| 沅陵县| 兴海县| 武平县| 桦川县| 佛教| 元江| 阿拉善左旗| 资溪县| 葫芦岛市| 英山县| 白朗县| 肇源县| 和平县| 边坝县| 嘉峪关市|