现在越来越多的开源软件在配置文件中都使用了YAML格式,这种格式文件去除了引号以及各种括号,看起来语法更加精炼。究其原因,YAML格式用更少的语法来表达丰富的含义。
YAML是一个可读性更高(和XML、JSON格式相比),用来表达数据序列化的格式。YAML的意思是”Yet Another Markup Language”(YAML仍是一种标记语言)。
我们通过一段人员简历示例来了解下YAML格式
#YAML格式
name:张三
age:22
sex:男
interest:
兴趣1:爬山
兴趣2:音乐
skill:
- 语言:JAVA
时间:2年
- 语言:Python
时间:2年
exam:
- subject:英语4级
score:50
- subject:高级程序员
score:50
YAML基本格式要求:
YAML大小写敏感
使用缩进代表层次关系
缩进只能使用空格,空格不要求个数,只需要相同层级对齐(一般建议2个或4个空格),并且不允许使用Tab。
对象:
格式为key:value。冒号后面要加一个空格。
如示例中的 name: 张三
还可以使用缩进表示层级关系,如
interest:
兴趣1:爬山
兴趣2:音乐
YAML中还支持流式(flow)语法表示对象,比如上面代码可以写为:
interest:{兴趣1:爬山,兴趣2:音乐}
数组项:
使用一个短横线加一个空格代表一个数组项,如
skill:
- 语言:JAVA
时间:2年
- 语言:Python
时间:2年
Pip install ruamel.yaml
YAML文件的读取
通过代码演示yaml文件的读取
from ruamel.yaml import YAML
yaml=YAML(typ='safe')
with open(r'g:bookcode1010.1.yml',encoding="utf-8") as file:
data=yaml.load(file)
print(data)
输出结果如下:
{'name': '张三', 'age': 22, 'sex': '男', 'interest': {'兴趣1': '爬山', '兴趣2': '音乐'}, 'skill': [{'语言': 'JAVA', '时间': '2年'}, {'语言': 'Python', '时间': '2年'}], 'exam': [{'subject': '英语4级', 'score': 50}, {'subject': '高级程序员', 'score': 50}]}
YAML文件的写入
通过代码演示将字典或者列表写入YAML文件。
from ruamel.yaml import YAML
yaml=YAML()
data={'name': '李四', 'age': 22, 'sex': '男',
'interest': {'兴趣1': '爬山', '兴趣2': '音乐'},
'skill': [{'语言': 'Python', '时间': '2年'}],
'exam': [{'subject': '高级程序员', 'score': 50}]
}
with open(r'g:bookcode1010.2.yaml',mode='w',encoding="utf-8") as file:
yaml.dump(data,file)
结果如下:
YAML格式,个人感觉比JSON明显要清晰一些。大家可以亲自写一遍代码,加深记忆加油。