操作yaml文件
1.yaml介绍
yaml:Yet Another Markup Language的缩写。Yaml是专门用来写配置文件的语言,非常简洁和强大,远比json格式方便。
-
Python搭建yaml环境
pip install PyYaml
pip install --ignore-installed PyYAML
-
yaml的语法规则
大小写敏感
使用缩进表示层级关系
缩进时不允许使用Tab键,只允许使用空格。
缩进的空格数目不重要,只要相同层级的元素左侧对齐即可
使用#表示注释 字符串可以不用引号标注
-
yaml的样式
1. 对象:键值对的集合(字典形式)
键值对用冒号”:” 间隔,冒号之间需要用空格分隔
如:
phone: 151xxxxxxxx addr: xx路xx号
得到结果:
{“phone”:”151xxxxxxxx”,”addr”:”xx路xx号”}
2. 数组:列表的形式
数组前需要有短横杠”-”符号,符号与值之间需要用空格分隔
如:
- value1 - value2
得到结果:
[“value1”,”value2”]
3. 特殊类型
字符串默认不使用引号表示。但是字符串之中包含空格或特殊字符,需要放在引号之中
str: '内容: 字符串'
None值可用null 或 ~ 符号表示
单引号和双引号都可以使用,双引号不会对特殊字符转义。
s1: '内容\n字符串' s2: "内容\n字符串"
其他内容可参考:https://www.ruanyifeng.com/blog/2016/07/yaml.html?f=tt
4.多个yaml在一个文档中,使用---分割
yaml文件示例
---
student:
- name: lucy,
age: 18
class: 19
grade: { English: 98,Math: 50,Art: 33 }
- name: momo,
age: 33
class: 20
grade: { English: 55,Math: 100,Art: 98 }
---
reqesttdata:
- { shouji: 13456755448,appkey: 0c818521d38759e1 }
- { shouji: 13456755449,appkey: 0c818521d38759e1 }
- { shouji: 13456755450,appkey: 0c818521d38759e1 }
读取方法示例
def get_more_than_one_yaml_for_one_file():
f = open(file=data_file_path1,mode="r")
data = yaml.safe_load_all(f)#读取一个yaml文件中多个文档需要使用yaml.load_all())
return data
test_data = get_more_than_one_yaml_for_one_file()
for i in test_data:
print(i)
"""
结果是:
{'student': [{'name': 'lucy,', 'age': 18, 'class': 19, 'grade': {'English': 98, 'Math': 50, 'Art': 33}}, {'name': 'momo,', 'age': 33, 'class': 20, 'grade': {'English': 55, 'Math': 100, 'Art': 98}}]}
{'reqesttdata': [{'shouji': 13456755448, 'appkey': '0c818521d38759e1'}, {'shouji': 13456755449, 'appkey': '0c818521d38759e1'}, {'shouji': 13456755450, 'appkey': '0c818521d38759e1'}]}
"""
print(list(get_more_than_one_yaml_for_