YAML是一个比XML,JSON数据格式的更加方便,简洁的,易于阅读的序列化数据格式。在很多的脚本语言中都有应用,下面以其在Python语言中为例,总结下个人的心得。
在python中,我们一般用ini 文件来管理小规模的配置(用configparser来解析),用xml,json,或者csv,excel来管理大规模的配置。如果用yaml来管理配置,更加方便简单。
首先要装 PyYAML
安装起来很简单:
我们可以参考阮一峰老师的教程:
YAML语言教程
总的来说,语法没什么难度,也是人们司空见惯的了。
大小写敏感
使用缩进表示层级关系
缩进时不允许使用Tab键,只允许使用空格。
缩进的空格数目不重要,只要相同层级的
使用空白字元为文件缩排来表示结构;不过不能使用跳格字元(TAB)。
注解由井字号( # )开始,可以出现在一行中的任何位置,而且范围只有一行(也就是一般所谓的单行注解)
每个清单成员以单行表示,并用短杠+空白( - )起始。或使用方括号( [ ] ),并用逗号+空白( , )分开成员。
每个杂凑表的成员用冒号+空白( : )分开键值和内容。或使用大括号( { } ),并用逗号+空白( , )分开。
杂凑表的键值可以用问号 ( ? )起始,用来明确的表示多个词汇组成的键值。
字串平常并不使用引号,但必要的时候可以用双引号 ( “ )或单引号 ( ‘ )框住。
使用双引号表示字串时,可用倒斜线( \ )开始的跳脱字元(这跟C语言类似)表示特殊字元。
区块的字串用缩排和修饰词(非必要)来和其他资料分隔,有新行保留(preserve)(使用符号 )或新行折叠(flod)(使用符号 > )两种方式。
在单一档案中,可用连续三个连字号(—-)区分多个档案。
另外,还有选择性的连续三个点号( … )用来表示档案结尾。
数值型: 直接书写即可。不区分整型还是浮点型。
字符串: 字符串可以加引号,也可以不加。
时间: ISO8601 格式。如2017-12-14t21:59:43.10-05:00
日期: 采用复合 iso8601 格式的年、月、日表示。如1970-01-01
关于强制类型转换: 可以通过两个英文感叹号+新的数据类型的方式来进行强制的类型转换。
如:
将变为:
yaml.load与yaml.dump方法
该模块提供了一些方法,不过常用的方法只有两个yaml.load和yaml.dump ,以下是一个版本相关的yaml 格式文件:
yaml.load方法:
执行结果:
yaml与xml
yaml与json
准确的说json 应该算是yaml 标准下的一个字集,可以很方便的转换。
a、转换YAML到JSON
b、转换JSON到YAML
于是我们可以把操作yaml封装成一个类:
每次只需要写好yaml文件以及路径就可以读写相应的文件,获取相应的值了。
比如我们用appium做mobile的自动化,
就可以简单写成:
然后实现起来也很简单:
只要稍微管理下配置文件,就减少了很多维护成本了。
领取专属 10元无门槛券
私享最新 技术干货