亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Python pickle模塊用法實例分析

 更新時間:2015年05月27日 10:43:30   作者:imzoer  
這篇文章主要介紹了Python pickle模塊用法,實例分析了pickle模塊的功能與相關(guān)使用技巧,需要的朋友可以參考下

本文實例講述了Python pickle模塊用法。分享給大家供大家參考。具體分析如下:

pickle提供了一個簡單的持久化功能??梢詫ο笠晕募男问酱娣旁诖疟P上。

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

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

pickle.load(file)

反序列化對象。將文件中的數(shù)據(jù)解析為一個Python對象。

其中要注意的是,在load(file)的時候,要讓python能夠找到類的定義,否則會報錯:

比如下面的例子

import pickle
class Person:
  def __init__(self,n,a):
    self.name=n
    self.age=a
  def show(self):
    print self.name+"_"+str(self.age)
aa = Person("JGood", 2)
aa.show()
f=open('d:\\p.txt','w')
pickle.dump(aa,f,0)
f.close()
#del Person
f=open('d:\\p.txt','r')
bb=pickle.load(f)
f.close()
bb.show()

如果不注釋掉del Person的話,那么會報錯如下:

>>> 
JGood_2

Traceback (most recent call last):
 File "C:/py/test.py", line 15, in <module>
  bb=pickle.load(f)
 File "C:\Python27\lib\pickle.py", line 1378, in load
  return Unpickler(file).load()
 File "C:\Python27\lib\pickle.py", line 858, in load
  dispatch[key](self)
 File "C:\Python27\lib\pickle.py", line 1069, in load_inst
  klass = self.find_class(module, name)
 File "C:\Python27\lib\pickle.py", line 1126, in find_class
  klass = getattr(mod, name)
AttributeError: 'module' object has no attribute 'Person'

意思就是當前模塊找不到類的定義了。

clear_memo()

清空pickler的“備忘”。使用Pickler實例在序列化對象的時候,它會“記住”已經(jīng)被序列化的對象引用,所以對同一對象多次調(diào)用dump(obj),pickler不會“傻傻”的去多次序列化。

看下面的例子:

import StringIO
import pickle
class Person:
  def __init__(self,n,a):
    self.name=n
    self.age=a
  def show(self):
    print self.name+"_"+str(self.age)
aa = Person("JGood", 2)
aa.show()
fle = StringIO.StringIO()
pick = pickle.Pickler(fle)
pick.dump(aa)
val1=fle.getvalue()
print len(val1)
pick.clear_memo()
pick.dump(aa)
val2=fle.getvalue()
print len(val2)
fle.close()

上面的代碼運行如下:

>>> 
JGood_2
66
132
>>> 

此時再注釋掉pick.clear_memo()后,運行結(jié)果如下:

>>> 
JGood_2
66
70
>>> 

主要是因為,python的pickle如果不clear_memo,則不會多次去序列化對象。

希望本文所述對大家的Python程序設(shè)計有所幫助。

相關(guān)文章

  • python一行輸入多值的實現(xiàn)詳解

    python一行輸入多值的實現(xiàn)詳解

    開發(fā)人員通常想要用戶在一行中輸入多個值或者輸入。在python中有兩種方式讓用戶在一行中輸入多個值或者輸入,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-09-09
  • Python設(shè)計模式編程中Adapter適配器模式的使用實例

    Python設(shè)計模式編程中Adapter適配器模式的使用實例

    這篇文章主要介紹了Python設(shè)計模式編程中Adapter適配器模式的使用實例,一般來說適配器模式可以細分為類適配器和對象適配器模式,需要的朋友可以參考下
    2016-03-03
  • python簡易遠程控制單線程版

    python簡易遠程控制單線程版

    這篇文章主要為大家詳細介紹了python簡易遠程控制單線程版,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • python調(diào)用cmd命令行制作刷博器

    python調(diào)用cmd命令行制作刷博器

    這篇文章主要介紹了Python制作一個簡單的刷博器,可以學習Python線程、調(diào)用cmd命令行、打開網(wǎng)頁的知識點,大家參考使用吧
    2014-01-01
  • Django QuerySet查詢集原理及代碼實例

    Django QuerySet查詢集原理及代碼實例

    這篇文章主要介紹了Django QuerySet查詢集原理及代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-06-06
  • Tensorflow實現(xiàn)AlexNet卷積神經(jīng)網(wǎng)絡(luò)及運算時間評測

    Tensorflow實現(xiàn)AlexNet卷積神經(jīng)網(wǎng)絡(luò)及運算時間評測

    這篇文章主要為大家詳細介紹了Tensorflow實現(xiàn)AlexNet卷積神經(jīng)網(wǎng)絡(luò)及運算時間評測,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • python中使用urllib2偽造HTTP報頭的2個方法

    python中使用urllib2偽造HTTP報頭的2個方法

    這篇文章主要介紹了python中使用urllib2偽造HTTP報頭的2個方法,即偽造http頭信息,需要的朋友可以參考下
    2014-07-07
  • Python3 mmap內(nèi)存映射文件示例解析

    Python3 mmap內(nèi)存映射文件示例解析

    這篇文章主要介紹了Python3 mmap內(nèi)存映射文件示例解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-03-03
  • python自動化測試三部曲之unittest框架的實現(xiàn)

    python自動化測試三部曲之unittest框架的實現(xiàn)

    這篇文章主要介紹了python自動化測試三部曲之unittest框架的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-10-10
  • Python3.6連接Oracle數(shù)據(jù)庫的方法詳解

    Python3.6連接Oracle數(shù)據(jù)庫的方法詳解

    這篇文章主要介紹了Python3.6連接Oracle數(shù)據(jù)庫的方法,較為詳細的分析了cx_Oracle模塊安裝及Python3.6使用cx_Oracle模塊操作Oracle數(shù)據(jù)庫的具體操作步驟與相關(guān)注意事項,需要的朋友可以參考下
    2018-05-05

最新評論