数据交换格式

json 模块

json (JavaScript Object Notation)是一种轻量级的数据交换语言,以文字为基础,且易于让人阅读。尽管 json 是JavaScript的一个子集,但 json 是独立于语言的文本格式,并且采用了类似C语言家族的一些习惯

 

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

json 建构于两种结构基础之上:

1、'名称/值'对的集合。在不同的语言中,它被理解为对象(object)、记录(record)、结构(struct)、字典(dictionary)、哈希表(hash table)、有键列表(keyed list)或者关联数组(associative array)

2、值的有序列表(An ordered list of values)。在某些语言中,它被理解为数组(array),类似于Python中的类表

 

json 模块的主要功能:

1、序列化:encoding,把一个Python对象编码转化成JSON字符串

2、反序列化:decoding,把JSON格式字符串解码转换为Python数据对象

 

序列化的两种方法

# dumps 方法
import json
dic = {'name':'alex','age':'25'}
data = json.dumps(dic)
f = open('test','w')
f.write(data)
f.close()

# dump 方法
import json
dic = {'name':'mike','age':'20'}
f = open('test','a')
json.dump(dic,f) # 不用再手动去写入文件中
f.close()

 

反序列化的两种方法

# loads 方法
import json
f = open('test','r')
data = f.read()  # 在json文件中的并不是字典,而是json的一种字符串格式
data = json.loads(data)  # 把json数据重新转换成为字典类型
print(data['name'])

# load 方法
import json
f = open('test','r')
a = json.load(f)  # 不用手动去read json中的数据
print(a['name'])

 

pickle 模块

对于类和函数对象,json不能进行序列化,可以使用 pickle 模块来进行相应的操作

pickle 模块只能用于Python中,不同版本的Python可能彼此都不兼容,因此,只能用Pickle保存那些不重要的数据

 

pickle 写入方式:

import pickle

def foo():
    print('Hello World!')

data = pickle.dumps(foo)
f = open('test1','wb')
f.write(data)
f.close()

 

pickle 的读取方式与 json 模块一致,同为 dump ,dumps 函数

 

shelve 模块

shelve 模块是一个简单的数据存储方案,类似key-value数据库,可以很方便的保存python对象,其内部是通过pickle协议来实现数据序列化

 

shelve 使用方式:

import shelve

with shelve.open("shelve_test") as f:
    f["name"] = 'alex'
    f["age"] = '25'
# 这里直接保存到了文件中,生成了3个文件shelve_test.bak,shelve_test.dat,shelve_test.dir

with shelve.open('shelve_test') as f:  # 只使用shelvefile名字即可
    print(f["name"])

    for key, value in f.items():
        print(key, ': ', value)
 >>> alex
     age :  25
     name :  alex
扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄