YAML 语言教程与使用案例

本文详细介绍了YAML的基本语法、数据结构,以及在Python中的使用,包括对象、数组、复合结构、纯量数据类型等。通过案例展示了如何使用Python的yaml模块解析和验证YAML文件。
摘要由CSDN通过智能技术生成

YAML语言教程与使用案例,如何编与读懂写YAML文件。

YAML概要

YAML 是 “YAML Ain’t a Markup Language”(YAML 不是一种标记语言)的递归缩写。在开发的这种语言时,YAML 的意思其实是:“Yet Another Markup Language”(仍是一种标记语言)。

YAML是一个类似 XML、JSON 的标记性语言。YAML 强调以数据为中心,并不是以标识语言为重点。因而 YAML 本身的定义比较简单,号称“一种人性化的数据格式语言”。

基本语法

1、大小写敏感

2、使用缩进表示层级关系

3、缩进时不允许使用Tab键,只允许使用空格

4、缩进的空格数不重要,只要相同层级的元素左侧对齐即可。【实际使用中建议两个空格作为一个层级的缩进】

5、# 表示注释,从这个字符一直到行尾,都会被解释器忽略

6、冒号,以冒号结尾除外,其他所有冒号后面必须有空格

7、短横线,表示列表项,使用一个短横线加一个空格;多个项使用同样的缩进级别作为同一列表

支持的数据结构

1、对象:键值对的集合,又称为映射(mapping)/ 哈希(hashes) / 字典(dictionary)

2、数组:一组按次序排列的值,又称为序列(sequence) / 列表(list)

3、字面量/纯量(数字、字符串、布尔值)(scalars):单个的、不可再分的值

YAML 组织结构

YAML 文件可以由一或多个文档组成(即相对独立的组织结构组成),文档间使用“---”(三个横线)在每文档开始作为分隔符(可选)。同时,文档也可以使用“...”(三个点号)作为结束符(可选)。如下图所示:

备注:如果只是单个文档,分隔符“---”可省略。

每个文档并不需要使用结束符“...”来表示结束,但是对于网络传输或者流来说,有明确结束的符号,有利于软件处理。(例如不需要知道流关闭就能知道文档结束)

在这里插入图片描述

Python中yaml模块的使用

Python pip 安装

如果未安装pip,则可以使用以下方法来安装:

# curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py   # 下载安装脚本
# python get-pip.py    # 运行安装脚本  或则:python3 get-pip.py  根据使用的Python决定
# pip --version        # 版本查看

用哪个版本的 Python 运行安装脚本,pip 就被关联到哪个版本。

pip安装yaml与导入

安装pyyaml

# pip install pyyaml  # 或者pip3 install pyyaml

检查是否安装成功:

1、命令行输入:python

2、再输入:import yaml

安装成功后,在脚本里导入的语句,都是 import yaml

YAML-对象数据类型

备注:之所以对yaml文件使用Python进行解析,是因为我们要测验yaml文件格式是否书写正确。

对象数据:是一组键值对,使用冒号结构表示。

单个对象文档文件

yaml文件

[root@docker02 yaml]# cat demo_01_obj.yml
---
name: zhang
age: 22

Python解析

[root@docker02 yaml]# cat demo_01_obj.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Author: zhang

import yaml

file_path = "./demo_01_obj.yml"
file = open(file_path, 'r')
ys = yaml.load(file.read(), Loader=yaml.Loader)
print ys

输出结果

[root@docker02 yaml]# python demo_01_obj.py 
{'age': 22, 'name': 'zhang'}

多个对象文档文件

yaml文件,仔细对比下加了"---“和”..." 的区别

[root@docker02 yaml]# cat demo_02_obj.yml
---
name: zhang
age: 22
...
---
name: Jane
age: 20
key: 
  child-key: value
  child-key2: value2
...
---
obj: {obj_key1: value1, obj_key2: val
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值