文章目录
- 语法规则
- 支持的数据结构
- 锚点和引用
- Yaml文件示例
- Yaml 文件读取
语法规则
- 大小写敏感
- 使用缩进表示层级关系
- 缩进时不允许使用 Tab 键,只允许使用空格
- 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可
支持的数据结构
- 对象:键值对的集合,又称为映射(mapping)/ 哈希(hashes) / 字典(dictionary)
- 数组:一组按次序排列的值,又称为序列(sequence) / 列表(list)
- 纯量(scalars):单个的、不可再分的值
- 布尔值
- 整数
- 浮点数
- None(Null/null/~)
- 日期datetime(2021-01-01)
锚点和引用
- 锚点&:标注一个内容,锚点名称自定义
- 引用*:使用被标注的内容<<: *锚点名
Yaml文件示例
---
login: &md
- id
- 'test'
out:
- css
- None
- *md
---
login:
- css
- '9'
Yaml 文件读取
import yaml
def read_yaml(file_path='./yaml.yaml', page_num=0):
"""
读取yaml文件(多页面)
:param file_path:
:param page_num: yaml中第几个页面的元素(从0开始)
:return:指定页的数据
"""
result = []
file = open(file_path, encoding='utf-8')
obj = yaml.load_all(file, Loader=yaml.FullLoader)
for i in obj:
result.append(i)
return result[page_num]
def yaml_write(data, file_path='./yaml.yaml', mode='w'):
"""
写入yaml文件
:param file_path:
:param data:
:param mode:
:return:
"""
with open("%s" % file_path, "%s" % mode) as f:
yaml.dump(data, f, encoding='utf-8', allow_unicode=True)
if __name__ == '__main__':
data = {
'Search_Data': {
'search_test_002': {
'expect': {
'value': 'a'}, 'value': 'b'},
'search_test_001': {
'expect': [4, 5, 6], 'value': 456}}}
yaml_write(data, 'a')