国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

詳解Python之數據序列化(json、pickle、shelve)

2020-02-23 04:31:15
字體:
來源:轉載
供稿:網友

一、前言

1. 現實需求

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

    把內存中的各種數據類型的數據通過網絡傳送給其它機器或客戶端; 把內存中的各種數據類型的數據保存到本地磁盤持久化;

2.數據格式

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

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

3. 序列化/反序列化

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

4.相關模塊

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

模塊名稱 描述 提供的api
json 用于實現Python數據類型與通用(json)字符串之間的轉換 dumps()、dump()、loads()、load()
pickle 用于實現Python數據類型與Python特定二進制格式之間的轉換 dumps()、dump()、loads()、load()
shelve 專門用于將Python數據類型的持久化到磁盤,shelf是一個類似dict的對象,操作十分便捷 open()

二、json模塊

大部分編程語言都會提供處理json數據的接口,Python 2.6開始加入了json模塊,且把它作為一個內置模塊提供,無需下載即可使用。

1. 序列化與反序列化

Python的JSON模塊 序列化與反序列化的過程分別叫做:encoding 和 decoding。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 陇南市| 青海省| 乌拉特前旗| 汉阴县| 禹州市| 来宾市| 景宁| 巫溪县| 册亨县| 云霄县| 山阳县| 胶州市| 新疆| 上饶市| 隆回县| 和田市| 新巴尔虎左旗| 长春市| 大荔县| 迁西县| 东明县| 万山特区| 顺义区| 和龙市| 三河市| 旅游| 五常市| 云南省| 虞城县| 巢湖市| 介休市| 罗平县| 建瓯市| 民乐县| 扶余县| 崇州市| 隆回县| 新建县| 荆州市| 宝丰县| 武安市|