本節(jié)內(nèi)容


  1. 前言

  2. json模塊

  3. pickle模塊

  4. shelve模塊

  5. 總結(jié)

一、前言


1. 現(xiàn)實(shí)需求

每種編程語(yǔ)言都有各自的數(shù)據(jù)類型,其中面向?qū)ο蟮木幊陶Z(yǔ)言還允許開(kāi)發(fā)者自定義數(shù)據(jù)類型(如:自定義類),Python也是一樣。很多時(shí)候我們會(huì)有這樣的需求:

  • 把內(nèi)存中的各種數(shù)據(jù)類型的數(shù)據(jù)通過(guò)網(wǎng)絡(luò)傳送給其它機(jī)器或客戶端;

  • 把內(nèi)存中的各種數(shù)據(jù)類型的數(shù)據(jù)保存到本地磁盤持久化;

2.數(shù)據(jù)格式

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

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

3. 序列化/反序列化

將對(duì)象轉(zhuǎn)換為可通過(guò)網(wǎng)絡(luò)傳輸或可以存儲(chǔ)到本地磁盤的數(shù)據(jù)格式(如:XML、JSON或特定格式的字節(jié)串)的過(guò)程稱為序列化;反之,則稱為反序列化。

4.相關(guān)模塊

本節(jié)要介紹的就是Python內(nèi)置的幾個(gè)用于進(jìn)行數(shù)據(jù)序列化的模塊:

  • 模塊名稱描述提供的api
    js

    網(wǎng)友評(píng)論