首先是对象信息和数据结构信息——通过转化为后存储和传输——字符串类型
可序列化的数据类型:
不可用于序列化的数据类型
json模块是一个通用的序列化模块。
方法名 | 参数 | 介绍 | 举例 | 返回值 |
---|---|---|---|---|
dumps | obj | 对象序列化 | json.dumps([1,2]) | 字符串 |
loads | str | 返序列化 | json.loads(’[1,2,3]’) | 原始数据类型 |
使用pickle模块效率要比json模块高。
方法名 | 参数 | 介绍 | 举例 | 返回值 |
---|---|---|---|---|
dumps | obj | 对象序列化 | pickle.dumps([1,2]) | 比特 |
loads | byte | 返序列化 | json.loads(’[1,2,3]’) | 原始数据类型 |
import json def read(path): with open(path, 'r') as f: data = f.read() return json.loads(data) def write(path, data): with open(path, 'w') as f: if isinstance(data, dict): _data = json.dumps(data) f.write(_data) else: raise TypeError('data is dict') return True data = {'name': '杨家将', 'age': 18, 'top': 176} if __name__ == '__main__': # write('test.json', data) result = read('test.json') print(result, type(result))
文本文件:xxx.yaml
服务器配置文件:
name: (代表key值) xiaomi (代表value值) xinqing:(以列表的形式) -haha -heihei new:(以字典的形式呈现) a:b c:1
用法:
f = open(yaml_file, 'r') data = yaml.load(f.read()) f.close()
返回值:字典类型
{ name: 'xiaomi', 'age':10, 'xinqing':['haha', 'heihei'], 'new':{'a':'b', 'c':1} }
url: https://www.imooc.com/ types: - 前沿 - 前端 - 后端 - 移动端 - 云计算 - 运维 - ui python: web: django spader: bs5
import yaml def read(path): with open(path, 'r') as f: data = f.read() result = yaml.load(data, Loader=yaml.FullLoader) # 这里要加上Loader参数,并且赋值为yaml.FullLoader,目的是在数据解析过程变的更安全 return result if __name__ == '__main__': result = read('muke.yaml') print(result, type(result))