yaml/json
区别:
1、dump(),load() 处理的是json文件
2、dumps(),loads() 处理的是字符串
json.dumps() 将字典类型转化成字符串类型
json.loads() 将字符串类型转化成字典类型
json.dump() 将dict类型的数据转成str,并写入到json文件
json.load() 将从json文件中读取数据
f是文件流
data = yaml.load(f)
YAML
1. 从yaml中读取出的数据可以直接为json或列表
2. 编写数据语法简单
规则
1.大小写敏感
2.使用缩进表示层级关系
3.缩进时不允许使用Tab键,只允许使用空格。
4.缩进的空格数目不重要,只要相同层级的元素左侧对齐即可
- 支持的数据结构
1.对象:键值对的集合
2.数组:一组按次序排列的值,又称为列表(list)
3.纯量(scalars):单个的、不可再分的值
- 锚点&和引用*
锚点:标注一个内容,锚点名称自定义
引用:使用被标注的内容<<: *锚点名
1.4 数据类型
1. 字典
语法:
1). 直接以字典的形式编写 {"name":"张三","age":18}
2). 键名+冒号+空格+值
如: name: "张三"
提示:
1. 如果值为字典或列表,必须换行+缩进
注意事项:
1. 需求达到字典格式,字典格式一定确保准确。
2. 键值对无顺序可言,因为在字典中不需要顺序。
3. yaml内的语法是一个完整串,不可多个串。
2. list
语法:
1). 直接以列表形式编写 [1,2,3]
2). 杠(-)+空格( )+值 如: - "张三"
相同级别有几个,就有几个杠(-),值为字典或列表换行+缩进。
3. 纯量
1. 字符串:name: "张三" 注意;整型带引号为字符串
2. 整型: 如:num: 30 注意:不带引号
3. 浮点型: 如:18.234 最多小数位为15位
4. 布尔型:
1). TRUE/FALSE
2). true/false
3). True/False
5. 空
1). Null
2). NULL
3). (空格)
4). ~
5). null
6. 日期:
1). 2018-12-12 12:12:12
2). 2018-12-12 12:12:12.999999
4. 锚点
定义:&imp
位置:键名后定义 如: name: &imp
引用:<<: *imp
注意:
1. 锚点键名不能和被引用键名相同
1.5 安装
命令:pip install pyyaml
1.6 yaml文件读取
1. 方法:yaml.load(stream)
2. 操作:
with open('../Data/login_data.yaml', 'r', encoding='utf-8') as f:
data = yaml.load(f, Loader=yaml.FullLoader)
print(data)
1.7 yaml文件写入
1. 方法:yaml.dump(data,stream)
data:为要写入的串
stream: 写入**.yaml文件名及目录
2. 操作:
data = {"name": "li", "age": 18}
with open("./02.yaml", "w", encoding="utf-8") as f:
yaml.dump(data, f, allow_unicode=True)
3. 注意:
allow_unicode:使用Unicode编码,否则写入为乱码。
encoding="utf-8":不设置的话,读取格式为乱码(低pycharm版本)。
#{name: li, age: 18, datas: {height: 180, weight: 130}}
#neme: "li"
#age: 18
#datas:
# height: 180
# weight: 130
#[1, 2, 3]
#- 1
#- 2
#- 3
#[1, 2, [3, [4,5]], 6]
#[1, 2, [3, [4, 5]], 6]
#- 1
#- 2
#-
# - 3
# -
# - 4
# - 5
#- 6
#[1, 3, {'a': 0, 'b': ['d', 'l', 'm', {'c': 0, 8: 'l'}, 't']}, 9]
- 1
- 3
-
a: 0
b:
- d
- l
- m
-
c: 0
8: l
- t
- 9