yaml,一款比ini更好用的数据管理工具
1、安装pyyaml模块
2、读取yaml文件数据
import yaml f = open("data.yaml", "r", encoding="utf-8") data = yaml.load(f, Loader=yaml.FullLoader) print(data)
代码就这么几行,不用这里就不细说了,
下面来看看,yaml文件应该怎么写(文件名以.yaml为后缀),
在yaml中,常用的数据格式主要有两种:字典、列表,
一、字典
键值之间使用:作为分割符,一定要在:的后面加空格,否则会报错
1、key为字符串
# key和value如果不是数字类型,也不用加引号,读取后默认转为str类型 a: c b: 2
读取结果: {'a': 'c', 'b': 2}
2、key为数字
# 此时的key为int类型,读取后仍然是int类型 1: 3 2: 4
读取结果: {1: 3, 2: 4}
3、value是字典
# value要tab缩进 a: q: 1 w: 2 b: z: 4 x: 5
读取结果:
{'a': {'q': 1, 'w': 2}, 'b': {'z': 4, 'x': 5}}
二、列表
列表与字典有所不同,列表使用- 作为标识,一定要在- 的后面加空格,否则会报错或者无法识别数据格式,
1、列表仅包含数字和字符串
- 1
- 2
- a
- b
读取结果: [1, 2, 'a', 'b']
2、列表包含列表
- 1 - - a - 2 - c - 3
读取结果: [1, ['a', 2, 'c'], 3]
三、混用
1、字典value为列表
a: - 1 - 2 b: - 4 - 5
读取结果: {'a': [1, 2], 'b': [4, 5]}
2、列表中包含字典
- 1 - a: 7 2: 8 c: 9 - 3
读取结果: [1, {'a': 7, 2: 8, 'c': 9}, 3]
上面将元素拆的很细,能不能简写呢,比如列表中包含字典,将字典数据就写在一行内,能行吗?
我们将上面最后一个例子改一下,
- 1 - {a: 7, 2: 8, c: 9} - 3
读取结果: [1, {'a': 7, 2: 8, 'c': 9}, 3]
事实证明这样操作也是可以,不过仍然要记得在: 后面加空格。