关键词:
一. Yaml
YAML 是一种简洁的非标记语言。YAML以数据为中心,使用空白,缩进,分行组织数据,从而使得表示更加简洁易读。
由于实现简单,解析成本很低,YAML特别适合在脚本语言中使用。列一下现有的语言实现:Ruby,Java,Perl,Python,PHP,JavaScript等。
YAML 是专门用来写配置文件的语言,非常简洁和强大,远比 JSON 格式方便。比如同一段数据Josn和Yaml的表示分别如下:
Json
name: ‘Tom Smith‘,age: 37,spouse: name: ‘Jane Smith‘, age: 25 ,children: [ name: ‘Jimmy Smith‘, age: 15 , name: ‘Jenny Smith‘, age: 12 ]
yaml name: Tom Smith age: 37 spouse: name: Jane Smith age: 25 children: - name: Jimmy Smith age: 15 - name: Jenny Smith age: 12
清晰明了程度一下子就看出来了吧。
语法特点
- 大小写敏感
- 使用缩进表示层级关系
- 缩进时不允许使用Tab键,只允许使用空格。
- 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可
yaml下载安装
pip install yaml
yaml数据类型详解
支持数据类型
- 纯量(scalars):单个的、不可再分的值
- 数组:一组按次序排列的值,又称为序列(sequence) / 列表(list)
- 对象:键值对的集合,又称为映射(mapping)/ 哈希(hashes) / 字典(dictionary)
纯量
数据最小的单位,不可以再分割。类似于Python中单个变量
flag
list数组
与Python的list数组结构类似,数组元素使用“-”开头,也可以根据缩进进行数组嵌套。
- Jack - Harry - Sunny # 也可以写成一行 [Jack,Harry,Sunny]
对应到python的list写法如下:
[‘Jack‘,‘Harry‘,‘Sunny‘]
对象
对象的一组键值对,使用冒号结构表示。类似Python中的字典数据结构。
platformName: Android platformVersion: 6.0.1 # Yaml 也允许另一种写法,将所有键值对写成一个行内对象。 platformName: Android,platformVersion: 6.0.1 注意:冒号后面一定要有空格!对应到python字典的写法如下: ‘platformName‘: ‘Android‘, ‘platformVersion‘: ‘6.0.1‘
数据嵌套
yaml数据嵌套表示可以将上面的各类数据根据实际场景进行组合嵌套。
数据场景
Tom Smith 37岁,他有一个妻子叫 Jane Smith,25岁。 另外他有2个孩子,一个叫Jimmy Smith,15岁;另外一个叫Jenny Smith ,12岁。
yaml语法表示如下:
name: Tom Smith age: 37 spouse: name: Jane Smith age: 25 children: - name: Jimmy Smith age: 15 - name: Jenny Smith age: 12
转化为Python的写法为:
‘name‘:‘Tom Smith‘,‘age‘:37,‘spouse‘:‘name‘:‘Jane Smith‘,‘age‘:25,‘childern‘:[‘name‘:‘Jimmy Smith‘,‘age‘:15,‘name‘:‘Jenny Smith‘,‘age‘:12]
yaml数据操作
数据读取:load()方法
load(stream, Loader=Loader) 解析文件流中的第一个YAML文档并生成相应的Python对象。
代码实现
# 读取familyinfo.yaml文件的数据 import yaml file = open(‘familyinfo.yaml‘, ‘r‘) data = yaml.load(file) # 打印全量data数据 print(data) # 获取配偶信息 print(data[‘spouse‘]) # 分别获取配偶的姓名和年龄 print(data[‘spouse‘][‘name‘]) print(data[‘spouse‘][‘age‘]) # 获取所有孩子的信息 print(data[‘children‘]) # 分别获取每个孩子的信息 print(data[‘children‘][0]) print(data[‘children‘][0][‘name‘]) print(data[‘children‘][0][‘age‘]) print(data[‘children‘][1]) print(data[‘children‘][1][‘name‘]) print(data[‘children‘][1][‘age‘]) # 修改Tom Smith的名字,但是不写入yaml文件 data[‘name‘] = ‘Ma Mingchen‘ print(data[‘name‘]) # 修改第一个孩子的名字 data[‘children‘][0][‘name‘]=‘Ma Yuhe‘ print(data[‘children‘][0][‘name‘])
数据转化
方法:dump()可以将Python对象序列化成YAML流。如果stream为None,则返回生成的字符串。
将下面python数据类型转化为yaml数据类型
slogan=[‘welcome‘,‘to‘,‘BeiJing‘] website=‘url‘:‘www.baidu.com‘
代码实现
import yaml # 将下面python数据类型转化为yaml数据类型 slogan=[‘welcome‘,‘to‘,‘BeiJing‘] website=‘url‘:‘www.baidu.com‘ print(slogan) print(website) # 将python数据类型转换为yaml流 print(yaml.dump(slogan)) print(yaml.dump(website))
kubernetes之yaml文件详解(汇总-详细)(代码片段)
...ml文件详解(汇总-详细) 一、YAML基础YAML是专门用来写配置文件的语言,非常简洁和强大,使用比json更方便。它实质上是一种通用的数据串行化格式。YAML语法规则: 大小写敏感使用缩进表示层级关系缩进时不允许使用Tal... 查看详情
自动化部署之ansibler之yaml与ansible基本元素(代码片段)
YANL介绍YAML:另一种标记语言。是用来写配置文件的语言,非常简洁和强大。YAML语法和其他语言类似,也可以表达散列表、标量等数据结构。结构通过空格来展示;序列里配置项通过-来代表;Map里键值用:来分隔;YAML的扩展名为ya... 查看详情
saltstack之配置管理(代码片段)
1.YAML语言YAML是一种直观的能够被电脑识别的数据序列化格式,是一个可读性高并且容易被人类阅读,容易和脚本语言交互,用来表达资料序列的编程语言。它类似于标准通用标记语言的子集XML的数据描述语言,语法比XML简单很... 查看详情
python接口自动化之yaml配置文件(代码片段)
...f0c;结合ddt实现数据驱动。在自动化过程中,需要使用配置文件储存数据,比如数据库信息、账号信息、域名等。其中,yaml文件是一种配置文件类型,相比较ini,conf配置文件来 查看详情
k8s资源对象管理之yaml文件的方式(升级回滚扩容缩容)(代码片段)
一、YAML文件基础YAML是专门用来配置文件的语言,非常简洁和强大。与了解的properties、XML、json等数据格式,习惯之后就会发现越来越好用。其实YAML就是结合了大部分的标记语言的特性,整合新开发的。YAML文件的特点:层次分明... 查看详情
springboot-配置文件详解(代码片段)
文章目录SpringBoot-配置文件1.文件类型1.1properties1.2yaml2.配置提示SpringBoot-配置文件1.文件类型1.1properties同以前的properties用法。1.2yaml简介YAML是“YAMLAin’tMarkupLanguage”(YAML不是一种标记语言)的递归缩写。在开发的这种语... 查看详情
python配置文件管理之ini和yaml文件读取(代码片段)
...系统,如测试、部署、网络等。其中最重要的一个方面是配置管理。良好的配置管理应允许在任何环境中执行软件而不更改代码。最常见的配置包括数据库认证配置、部署服务器的主机名、动态参数等。在本文中,我想与大家分... 查看详情
springboot04_配置文件三种读取配置文件方式(代码片段)
文章目录①.yaml配置文件②.读取配置的三种方式①.yaml配置文件①.YAML全称是YAMLAintMarkupLanguage。YAML是一种直观能够被电脑识别的数据数据序列化格式,并且容易被人阅读,容易和脚本语言交互的,可以被支持YAML库的不同的编程语言... 查看详情
springboot学习笔记--[springboot配置文件之yaml格式,springboot自动配置浅入,springboot集成jdbc](代码片段)
...生成启动图标https://www.bootschool.net/ascii文章目录1.springBoot配置文件2.浅入springBoot自动配置3.springboot集成JDBC1.springBoot配置文件在springboot中application.properties是默认生成的,这种格式的之前其实已经学过了;就是内容=值即可;目前,在s... 查看详情
springboot07配置文件yam写法(代码片段)
04、配置文件1、文件类型1.1、properties同以前的properties用法1.2、yaml1.2.1、简介YAML是“YAMLAin’tMarkupLanguage”(YAML不是一种标记语言)的递归缩写。在开发的这种语言时,YAML的意思其实是:“YetAnotherMarkupLanguage”... 查看详情
配置文件详细讲解(代码片段)
一、配置文件SpringBoot使用一个全局的配置文件,配置文件名是固定的application.propertiesapplication.yml配置文件的作用:修改SpringBoot自动配置的默认值;SpringBoot在底层都给我们自动配置好;YAML(YAMLAin’tMarkupLanguage)YAML是“YAML不是... 查看详情
yaml配置(代码片段)
yaml文件的作用yaml是一种直观的能够被电脑识别的的数据序列化格式,容易被人类阅读,并且容易和脚本语言交互。yaml的语法规则字母大小写敏感;通过缩进来表示层级关系,同层级元素需左对齐,且缩进的空格数多少没关系;... 查看详情
yaml配置注入(代码片段)
目录yaml配置注入yaml基础语法字面量:普通值(数组,布尔,字符串)对象,Map类型(键值对)数组(listandset)yaml注入案例1.新建person类:2.yaml文件内容:3.出现提示:4.测试加载指定配置文件读取其他文件(yaml)1.新建配置文件2.加载配置文件(student... 查看详情
springboot的配置(代码片段)
一、配置文件SpringBoot使用一个全局的配置文件,配置文件名是固定的;application.propertiesapplication.yml配置文件的作用:修改SpringBoot自动配置的默认值;SpringBoot在底层都给我们自动配置好;YAML :YAMLAin‘taMarkupLanguage(YAML不是一种标... 查看详情
yaml概述(代码片段)
...JSON格式:主要用于api接口之间消息的传递。YAML格式:用于配置和管理,YAM是一种简洁的非标记性语言,内容格式人性化 查看详情
yaml语言(代码片段)
1.YAML介绍YAML:以数据为中心,比JSON,XML更适合做配置文件;//示例:server:port:8081//此处有空格2.YAML基本语法使用缩进表示层级关系;缩进时,不允许使用Tab键,只允许使用空格;缩进的空格数目不重要,只有相同层级的元素左侧对齐即可;大小... 查看详情
yaml文件详解(代码片段)
...象JSON格式:主要用于api接口之间消息的传递YAML格式:用于配置和管理,YAML是一种简洁的非标记性语言,内容格式人性化,较易读YAML语法格式:●大小写敏感●使用缩进表示层级关系●不支持Tab键制表符缩进,只使用... 查看详情
yaml文件详解(代码片段)
...象JSON格式:主要用于api接口之间消息的传递YAML格式:用于配置和管理,YAML是一种简洁的非标记性语言,内容格式人性化,较易读YAML语法格式:●大小写敏感●使用缩进表示层级关系●不支持Tab键制表符缩进,只使用... 查看详情