配置文件语言之yaml(代码片段)

victorm victorm     2023-02-16     697

关键词:

一. 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数据类型详解

支持数据类型

  1. 纯量(scalars):单个的、不可再分的值
  2. 数组:一组按次序排列的值,又称为序列(sequence) / 列表(list)
  3. 对象:键值对的集合,又称为映射(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
familyInfo.yaml

转化为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])
yaml_load.py

数据转化

方法: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))
yaml_dump.py

 

 

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键制表符缩进,只使用... 查看详情