YAML概要
1. 认识 YAML
YAML是一个类似 XML、JSON 的标记性语言。YAML 强调以数据为中心,并不是以标识语言为重点。因而 YAML 本身的定义比较简单,号称“一种人性化的数据格式语言”。
它的基本语法规则如下:
大小写敏感
使用缩进表示层级关系
缩进时不允许使用Tab键,只允许使用空格。
缩进的空格数目不重要,只要相同层级的元素左侧对齐即可
1.1 YAML 的设计目标:
容易阅读
可用于不同程序间的数据交换
适合描述程序所使用的数据结构,特别是脚本语言
丰富的表达能力与可扩展性
易于使用
1.2 YAML 与 XML、JSON
YAML 与 XML
具有 XML 同样的优点,但比 XML 更加简单、敏捷等
YAML 与 JSON
JSON 可以看作是 YAML 的子集,也就是说 JSON 能够做的事情,YAML 也能够做
YAML 能表示得比 JSON 更加简单和阅读,例如“字符串不需要引号”。所以 YAML 容易可以写成 JSON 的格式,但并不建议这种做
YAML 能够描述比 JSON 更加复杂的结构,例如“关系锚点”可以表示数据引用(如重复数据的引用)。
1.3 YAML 组织结构
YAML 文件可以由一或多个文档组成(也即相对独立的组织结构组成),文档间使用“---”(三个横线)在每文档开始作为分隔符。同时,文档也可以使用“...”(三个点号)作为结束符(可选)。如下图所示:
如果只是单个文档,分隔符“---”可省略。
每个文档并不需要使用结束符“...”来表示结束,但是对于网络传输或者流来说,作为明确结束的符号,有利于软件处理。(例如不需要知道流关闭就能知道文档结束)
文件读取:
单个文件读取load()
#test.yaml
---name: James
age:20
#-*- coding: utf-8 -*-
importyaml
file_path =data/test.yml
file = open(file_path, 'r', encoding='utf-8')
ys = yaml.load(file.read(), Loader=yaml.Loader)
printys
输出:{'age': 20, 'name': 'James'}
将多个文档写在同一个yaml文件中,这时候我们就得用到我们的 load_all() 方法出场了,load_all() 方法会生成一个迭代器,可以用for输出出来&#x