简介
在开发的这种语言时,YAML 的意思其实是:"Yet Another Markup Language"(仍是一种标记语言)。
最后开发者又改变了原来的想法,改为:
YAML 是 "YAML Ain't a Markup Language"(YAML 不是一种标记语言)。
上面这些不重要,我们只需要知道YAML 是专门用来写配置文件的语言,非常简洁和强大,远比 JSON 格式方便就行。
注意格式:
'#'表示注释
大小写敏感
使用缩进表示层级关系
缩进不允许使用tab,只允许空格。缩进的空格数不重要,只要相同层级的元素左对齐即可
支持的数据类型
对象:键值对的集合,又称为映射/ 哈希 / 字典
数组:一组按次序排列的值,又称为序列 / 列表
纯量:单个的、不可再分的值
yaml对象
对象键值对使用冒号结构表示 key: value,冒号后面要加一个空格,固定写法。
也可以使用 key:{key1: value1, key2: value2, ...}。 还可以使用缩进表示层级关系,注意不要使用tab,冒号后面有空格。
其他类型暂时没有用到,我就没有去了解
PyYaml是python的一个专门对yaml文件操作模块,使用起来比较简单
安装方法
pip install PyYaml
既然是配置文件,那肯定要读取或者写入了,如何操作呢,继续看。。
新建一个.yml的文件
然后将上面图一的格式内容复制到yml中
对这个配置文件进行读取和写入操作
代码如下:
import pprint import yaml #读yaml with open('conf.yml', 'r', encoding='utf-8') as fs: data = yaml.safe_load(fs) #解析yaml文件内容并生成python对象 pprint.pprint(data) #打印 #写yaml data_w={'psw': {'new': 'abcdefg', 'old': 'abcdefgwj'}} with open('conf.yml','w') as fs: #写入模式 data2=yaml.safe_dump(data_w,fs) #将python对象转化为yaml流 #重新再读取yaml文件 with open('conf.yml','r') as fs: # 也是解析yaml文档,但是有一个Loader参数,默认为空。Loader=yaml.FullLoader解决告警问题 data3=yaml.load(fs,Loader=yaml.FullLoader) pprint.pprint(data3)
打印结果如下: