本節(jié)內容


  1. 前言

  2. json模塊

  3. pickle模塊

  4. shelve模塊

  5. 總結

一、前言


1. 現(xiàn)實需求

每種編程語言都有各自的數據類型,其中面向對象的編程語言還允許開發(fā)者自定義數據類型(如:自定義類),Python也是一樣。很多時候我們會有這樣的需求:

  • 把內存中的各種數據類型的數據通過網絡傳送給其它機器或客戶端;

  • 把內存中的各種數據類型的數據保存到本地磁盤持久化;

2.數據格式

如果要將一個系統(tǒng)內的數據通過網絡傳輸給其它系統(tǒng)或客戶端,我們通常都需要先把這些數據轉化為字符串或字節(jié)串,而且需要規(guī)定一種統(tǒng)一的數據格式才能讓數據接收端正確解析并理解這些數據的含義。XML 是早期被廣泛使用的數據交換格式,在早期的系統(tǒng)集成論文中經常可以看到它的身影;如今大家使用更多的數據交換格式是JSON(JavaScript Object Notation),它是一種輕量級的數據交換格式。JSON相對于XML而言,更加加單、易于閱讀和編寫,同時也易于機器解析和生成。除此之外,我們也可以自定義內部使用的數據交換格式。

如果是想把數據持久化到本地磁盤,這部分數據通常只是供系統(tǒng)內部使用,因此數據轉換協(xié)議以及轉換后的數據格式也就不要求是標準、統(tǒng)一的,只要本系統(tǒng)內部能夠正確識別即可。但是,系統(tǒng)內部的轉換協(xié)議通常會隨著編程語言版本的升級而發(fā)生變化(改進算法、提高效率),因此通常會涉及轉換協(xié)議與編程語言的版本兼容問題,下面要介紹的pickle協(xié)議就是這樣一個例子。

3. 序列化/反序列化

將對象轉換為可通過網絡傳輸或可以存儲到本地磁盤的數據格式(如:XML、JSON或特定格式的字節(jié)串)的過程稱為序列化;反之,則稱為反序列化。

4.相關模塊

本節(jié)要介紹的就是Python內置的幾個用于進行數據序列化的模塊:

    1. <var id="b79k8"><small id="b79k8"></small></var>
      1. <tfoot id="b79k8"></tfoot>
      2. 模塊名稱描述提供的api
        js

        網友評論

        <center id="b79k8"></center>
        <fieldset id="b79k8"><option id="b79k8"></option></fieldset>