Python ,pickle

來源:互聯網
上載者:User

標籤:

@Python pickle模組學習  

pickle提供了一個簡單的持久化功能。可以將對象以檔案的形式存放在磁碟上。

------------------------------------------

pickle.dump(obj, file[, protocol])
  序列化對象,並將結果資料流寫入到檔案對象中。參數protocol是序列化模式,預設值為0,表示以文本的形式序列化。protocol的值還可以是1或2,表示以二進位的形式序列化。

------------------------------------------
pickle.load(file)
  還原序列化對象。將檔案中的資料解析為一個Python對象。

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

比如下面的例子

[python] view plaincopy
  1. import pickle  
  2. class Person:  
  3.     def __init__(self,n,a):  
  4.         self.name=n  
  5.         self.age=a  
  6.     def show(self):  
  7.         print self.name+"_"+str(self.age)  
  8. aa = Person("JGood", 2)  
  9. aa.show()  
  10. f=open(‘d:\\p.txt‘,‘w‘)  
  11. pickle.dump(aa,f,0)  
  12. f.close()  
  13. #del Person  
  14. f=open(‘d:\\p.txt‘,‘r‘)  
  15. bb=pickle.load(f)  
  16. f.close()  
  17. bb.show()  

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

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

--------------------------------------------------

clear_memo()
  清空pickler的“備忘”。使用Pickler執行個體在序列化對象的時候,它會“記住”已經被序列化的對象引用,所以對同一對象多次調用dump(obj),pickler不會“傻傻”的去多次序列化。
看下面的例子:

[python] view plaincopy
  1. import StringIO  
  2. import pickle  
  3. class Person:  
  4.     def __init__(self,n,a):  
  5.         self.name=n  
  6.         self.age=a  
  7.     def show(self):  
  8.         print self.name+"_"+str(self.age)  
  9. aa = Person("JGood", 2)  
  10. aa.show()  
  11. fle = StringIO.StringIO()   
  12. pick = pickle.Pickler(fle)  
  13. pick.dump(aa)  
  14. val1=fle.getvalue()  
  15. print len(val1)  
  16. pick.clear_memo()  
  17. pick.dump(aa)  
  18. val2=fle.getvalue()  
  19. print len(val2)  
  20. fle.close()  

上面的代碼運行如下:

如果不注釋掉,則運行結果是第一個。如果注釋掉,那麼運行結果是第二個。

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

Python ,pickle

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.