YAML 是用于 Python 处理 yml 文件的 loader/dumper 程序包

version:0.17.21
更新日期2022-02-12
文档说明http://yaml.readthedocs.io
repositoryhttps://sourceforge.net/projects/ruamel-yaml/
pypihttps://pypi.org/project/ruamel.yaml/

0.16.13版本是最后一个在 Python 2.7上测试的版本。0.17.21是最后一个在 Python 3.5上测试的版本,也是最后一个支持旧的 PyYAML 函数的版本,你必须创建一个YAML ()实例并使用它的.load().dump()方法。

Examples

from ruamel.yaml import YAML

inp = """\
# example
name:
  # details
  family: Smith   # very common
  given: Alice    # one of the siblings
"""

yaml = YAML()
code = yaml.load(inp)
code['name']['given'] = 'Bob'

yaml.dump(code, sys.stdout)

# 输出结果
# example
name:
  # details
  family: Smith   # very common
  given: Bob      # one of the sibling

注意

老版本的使用方式

from __future__ import print_function

import sys
import ruamel.yaml

inp = """\
# example
name:
  # details
  family: Smith   # very common
  given: Alice    # one of the siblings
"""

code = ruamel.yaml.load(inp, ruamel.yaml.RoundTripLoader)
code['name']['given'] = 'Bob'

ruamel.yaml.dump(code, sys.stdout, Dumper=ruamel.yaml.RoundTripDumper)

# the last statement can be done less efficient in time and memory with
# leaving out the end='' would cause a double newline at the end
# print(ruamel.yaml.dump(code, Dumper=ruamel.yaml.RoundTripDumper), end='')


# 输入结果
name:
  # details
  family: Smith   # very common
  given: Bob      # one of the siblings

访问方式

可以通过[]get,访问ruamel.yaml.dump()返回的数据格式。

修改方式

通过构造dict,将值添加到指定的位置,并且可以添加注释

import sys
from ruamel.yaml import YAML

yaml_str = """\
first_name: Art
occupation: Architect  # This is an occupation comment
about: Art Vandelay is a fictional character that George invents...
"""
yaml = YAML()
data = yaml.load(yaml_str)
data.insert(1, 'last name', 'Vandelay', comment="new key")
yaml.dump(data, sys.stdout)


# 返回结果----------------------
irst_name: Art
last name: Vandelay    # new key
occupation: Architect  # This is an occupation comment
about: Art Vandelay is a fictional character that George invents...

默认情况下ruamel.yaml 缩进俩个空格,用于表示键值对和列表,可以通过例如使用 yaml.indent() 来更改此默认缩进。

YML

YAML 是 "YAML Ain't a Markup Language"(YAML 不是一种标记语言)的递归缩写,以yml和yaml为后缀,可与C,python,java多种语言交互,是一种专门用来配置文件的语言。YAML 的意思其实是:"Yet Another Markup Language"(仍是一种标记语言,但为了强调这种语言以数据做为中心,而不是以标记语言为重点,而用反向缩略语重命名。

YAML 基本语法

(1)分层:使用空格 Space 缩进表示分层,不同层次之间的缩进可以使用不同的空格数目,但是同层元素一定左对齐,即前面空格数目相同(不能使用 Tab,各个系统 Tab对应的 Space 数目可能不同,导致层次混乱)
(2)注释:‘#’表示注释,只能单行注释,从#开始处到行尾
(3)列表: 破折号后面跟一个空格(a dash and space)表示列表
(4)键值对:用冒号和空格表示键值对 key: value