怎么把yaml文件部署到测试环境(到底是不是python脚本中一种神奇的存在)
怎么把yaml文件部署到测试环境(到底是不是python脚本中一种神奇的存在)import yaml f=open('config.yaml' 'r') yaml.warnings({'YAMLLoadWarning': False}) data=yaml.load(f) print dataimport yaml f=open('config.yaml' 'r') data=yaml.safe_load(f) print datapip install PyYAMLyaml文件的读取在5.4版本之后略有不同,具体实现有以下三种方式。import yaml f=open('config.yaml' 'r') data=yaml.load(f Loader=yaml.FullLoader) print data
最近在写precheck的python脚本的时候,接触到了一个很灵活的文件格式,它不同于robotframework框架中的txt文本文件,同样是实现了配置文件的功能,但是,在python中,yaml让python脚本更加灵活。
在robotframework框架中,传统的配置文件的格式是txt文件,是以如下的形式:
${var} 172.28.0.1 @{list1} node1 node2 node3
而在yaml文件中,形式就很不一样了。如下所示:
pip install PyYAML
- 1、严格区分大小写
- 2、使用空格缩进表示层级关系,不能使用tab,缩进的数量不限,但是同一缩进左侧对齐
- 3、#表示注释
- 4、yaml支持列表和字典,也支持纯量,即就是单个的值,例如布尔值,整数,浮点数,时间,日期等。
- 5、- value,表示内容为列表格式数据,中间有一个空格
- 6、key: value,表示为字典格式数据,冒号后面一定要有一个空格
yaml文件的读取在5.4版本之后略有不同,具体实现有以下三种方式。
方式1import yaml f=open('config.yaml' 'r') data=yaml.load(f Loader=yaml.FullLoader) print data
方式2import yaml f=open('config.yaml' 'r') data=yaml.safe_load(f) print data
方式3import yaml f=open('config.yaml' 'r') yaml.warnings({'YAMLLoadWarning': False}) data=yaml.load(f) print data
接着就可以根据列表或者字典的取值方法,自由读取想要的数据了。
当然,yaml文件还有一个很nice的使用,就是函数式的复用,不过在yaml中叫做锚点。举个例子就
一目了然了。
{ "config": [ { "ip": "172.28.0.2" "hostname": "node2" "role": [ "nova" "cinder" ] } { "ip": "172.28.0.2" "hostname": "node2" "role": [ "nova" "cinder" ] } ] }
那么为什么说yaml是一种神奇的存在呢?那是因为yaml有以下的优势。- 1、可读性好。
- 2、和脚本语言的交互性好。
- 3、使用实现语言的数据类型。
- 4、模型化的信息结构。
- 5、易于实现,容易编写。
yaml,在python中通常被用作配置文件,比如docker inspect 的信息就可以很好的存放在yaml中。因为在编程语言中,json结构的数据易于阅读和获取,无论是在作为参数传入还是作为结果的校验,Json格式都给我们的脚本带来了便捷。如果有接触虚拟机的伙伴们可能就知道,对于主机以及虚拟机信息的展示,如果使用yaml格式的化,那就真的是太方便了。
所以,yaml,值得一用。