在我们的kubernetes中,你只需要两种结构类型就行了:
1、Lists
2、Maps
也就是说,你可能会遇到Lists的Maps和Maps的Lists,等等。不过不用担心,你只需要掌握了这两种结果也就可以了,其他更加复杂的我们暂且不讨论。
首先我们来看看Maps,我们都知道Map是字典,就是一个key:value的键值对,Maps可以让我们更加方便的去书写配置信息,例如:
第一行的---是分隔符,是可选的,在单一文件中,可连用三个连字号---区分多个文件。这里我们可以看到,我们有两个键:kind和apiVersion,它们对应的值分别是:v1和Pod。上面的YAML文件转化为json格式:
我们在创建一个相对复杂一点的YAML文件,创建一个KEY对应的值不是字符串而是一个Maps:
上面的YAML文件,metadata这个KEY对应的值就是一个Maps了,而且嵌套的labels这个KEY的值又是一个Map,可以多层嵌套。
YAML处理器是根据行缩进来知道内容之间的关联性的。比如我们上面的YAML文件,我们用了两个空格作为缩进,空格数量并不重要,但是你得保持一致,并且至少要求一个空格。
我们可以看到name和labels是相同级别的缩进,所以YAML处理器就知道了他们属于同一个Map,而app是labels的值是因为app的值缩进更大。
同样的我们转化为json格式:
Lists就是列表,说白就是数组,在Yaml文件中我们可以这样定义:
你可以有任何数量的项在列表中,每个项的定义以破折号(-)开头的,与父元素直接可以缩进一个空格。转化为json格式:
当然,lists的子项可以是map,maps的子项也可以是lists:
比如这个YAML文件,我们定义了一个叫containers的Lists对象,每个子项都由name,image,ports组成,每个ports都有一个key为containerPort的Map组成,转换为json格式:
使用YAML文件来创建一个Deployment吧。
API 说明: >
YAML是一个标记语言, 读音 "yamel",或者"雅梅尔"。
类似于其他的标记语言一样,YAML希望能提供一个标准格式,用来存储复杂的结构化数据,YAML的设计者希望YAML能满足下面几个条件:
用途: YAML经常用在数据的交换与存储方面,特别是这些数据同时需要人和机器都去访问的时候。比如配置文件、模型元数据文件等方面。
从上面我们可以看出,YAML要解决的问题实际上与XML和JSON等技术一样,那既然有了XML和JSON,为什么还需要YAML呢?
我想在机器处理上,XML和JSON应该都没有太大的短板,最大的问题在于方便人的处理上,比如XML,任何一个数据前后都要加上一个标签,这样对于人来说太繁琐。
XML格式的描述
YAML格式的描述,显然YAML格式对人来说更友好一些
说明: 另外,对于嵌套数据结构,YAML支持类似于Python的方式,使用缩进来代替Json或XML的各种括号或标签,在可阅读性方面有很大的改善。
实验地址: >
YAML 入门教程
参考:
python读取yaml文件
Python常用配置文件ini、json、yaml读写总结
读取yaml文件(数组用下标[x],字典用[key])
编写一个py文件,读取yaml文件,yaml文件需要通过safe_load方法转换成字典格式,然后再通过字典取值的方式获得值。
在目录下创建test3yaml文件
在目录下创建test3_fzyaml文件
python读取实现:
参考:
python txt文件常用读写 *** 作
利用Python从文件中读取字符串(解决乱码问题) Python - chardet自动检测字符编码
在利用 pytest 进行自动化测试时,会将测试用例写入 yaml 文件中,前面也做了一些应用,不过大都是根据别人的例子仿照着写,今天就来简单学习一下关于它的一些皮毛吧~
因为其格式以及语法清晰简单,非常适合表达数据结构清晰的信息,例如成为配置文件或者是测试用例数据文件。
支持三种数据类型
注意key值的冒号后面要加空格;
注意字符串前后不需要加引号,但如果字符串包含有特殊字符比如冒号,则需用引号将整个字符串进行标注。
python 读取后为 {'case':'正常输入姓名','body':'内容:无'}
以 - 开始的层级相同的行,代表一个数组, - 后面同样需要有一个空格。
python 读取后为 ['a','b','c']
包括字符串、浮点数、布尔值、 null 、整数、时间、日期。
python 读取后为 {'name': None}
在同一个 yaml 文件中,用 --- 来分段,代表不同的文档。
如果没有分段,则在读取yaml文件时,直接利用 yamlsafe_load() 。
如果 yaml 文件中有分段,则需要利用 yamlsafe_load_all() 及 for 循环进行输出。
自我记录,有错误欢迎指正~
先来看一个Springboot中的properties文件和对应YAML文件的对比:
可以明显的看到,在处理层级关系的时候,properties需要使用大量的路径来描述层级(或者属性),比如environmentsdevurl和environmentsdevname。其次,对于较为复杂的结构,比如数组(myservers),写起来更为复杂。而对应的YAML格式文件就简单很多:
可以直观的看到,YAML使用冒号加缩进的方式代表层级(属性)关系,使用短横杠(-)代表数组元素。
经过这个示例的演示,可以很明显的看到YAML针对properties文件的优异之处。
以上就是关于Yaml文件全部的内容,包括:Yaml文件、Python基础10--yaml文件的写法与使用、YAML (Yet Another Markup Language) - Kummer话你知等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)