python序列化pickle

來源:互聯網
上載者:User

標籤:python   序列化   pickle   

什麼叫做序列化?

將記憶體中的對象轉換為線性結構的字串(有時也稱位元組流),以便儲存或者傳輸.這種對象轉換為字串的行為通常叫做序列化.記憶體中的任意資料結構都可以映射為一個字串.

序列化

函數簽名

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

首先嘗試將table對象序列化寫入檔案dbase中,寫入方式是位元組形式:

table = {‘a‘ : [1, 2, 3], ‘b‘ : [‘spam‘, ‘egg‘], ‘c‘ : {‘name‘ : ‘Bob‘}}with open(‘dbase‘, ‘wb‘) as ff:    pickle.dump(table, ff)

如果我們開啟這個dbase檔案,可以看到如下一些看起來沒意義的字串,其實是python用內部約定的方式對table對象轉換為了這種字串.這裡請注意不同版本的python序列化後的字串可能有所不同,因此序列化適用於儲存不是特別重要的資料.否則升級python版本後,還原序列化會還原對象時會出現不一致的問題.

(dp0S‘a‘p1(lp2I1aI2aI3asS‘c‘p3(dp4S‘name‘p5S‘Bob‘p6ssS‘b‘p7(lp8S‘spam‘p9aS‘egg‘p10as.

也可以序列化後不用寫入檔案,直接用pickle.dump以字串返回:

string = pickle.dumps(table)
還原序列化

函數簽名:

pickle.load(file)

從dbase檔案讀出還原序列化還原對象:

with open(‘dbase‘, ‘rb‘) as fobj:    table_ = pickle.load(fobj)print table_

輸出:

{‘a‘: [1, 2, 3], ‘c‘: {‘name‘: ‘Bob‘}, ‘b‘: [‘spam‘, ‘egg‘]}

從輸出結果不難看出,與原來的table字典內容相同.

同樣我們可以直接讀入字串還原序列化:

obj = pickle.loads(string)

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.