简介
YAML(“Yet Another Markup Language”)是一种标记性语言,可读性高,用来表达数据序列化的格式。使用缩进表示层级关系,用来写项目配置文件,非常简洁和强大。
安装
pip install pyyaml
基本语法规则
- 大小写敏感
- 使用缩进表示层级关系
- 缩进不允许使用tab,只允许空格
- '#'表示注释
- 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可
数据类型
- 对象:键值对的集合,又称为映射(mapping)/ 哈希(hashes) / 字典(dictionary),对象的一组键值对,使用冒号结构表示。
animal: pets
#或者如下格式
hash: { name: Steve, foo: bar }
- 数组:一组按次序排列的值,又称为序列(sequence) / 列表(list),是由一组连词线(-)开头的行
- Cat
- Dog
- Goldfish
#或者如下格式
animal: [Cat, Dog]
- 纯量(scalars):单个的、不可再分的值,如字符串、布尔值、整数等
加载和保存yaml
- 加载yaml
函数yaml.load将一个YAML文档转换为一个Python对象。yaml.load接受一个字节字符串、一个Unicode字符串、一个开放的二进制文件对象或一个开放的文本文件对象。字节串或文件必须使用utf-8、utf-16-be或utf-16-le编码。
>>> yaml.load("""
... - Hesperiidae
... - Papilionidae
... - Apatelodidae
... - Epiplemidae
... """)
['Hesperiidae', 'Papilionidae', 'Apatelodidae', 'Epiplemidae']
- 保存yaml
yaml.dump函数接受一个Python对象并生成一个YAML文档。
>>> print(yaml.dump({'name': 'Silenthand Olleander', 'race': 'Human',
... 'traits': ['ONE_HAND', 'ONE_EYE']}))
name: Silenthand Olleander
race: Human
traits: [ONE_HAND, ONE_EYE]
yaml.dump接受第二个可选参数,它必须是一个打开的文本或二进制文件。在这种情况下,yaml.dump将把产生的YAML文档写入文件中。否则,yaml.dump将返回生成的文档。
>>> stream = file('document.yaml', 'w')
>>> yaml.dump(data, stream) # 将data写入到document.yaml
>>> print(yaml.dump(data))
一个例子
配置文件example.yaml
house:
family:
name: Doe
parents:
- John
- Jane
children:
- Paul
- Mark
- Simone
address:
number: 34
street: Main Street
city: Nowheretown
zipcode: 12345
加载example.yaml并print
import yaml
f = open('example.yaml', encoding = 'utf-8')
# 用load加载
conf = yaml.load(f)
print(type(conf))
print(conf['house'])
print(conf['house']['family']['parents'])
print("--------")
aproject = {'name': 'Silenthand Olleander',
'race': 'Human',
'traits': ['ONE_HAND', 'ONE_EYE']
}
ret = yaml.dump(aproject)
print(ret)
程序输出结果如下:
<class 'dict'>
{'family': {'name': 'Doe', 'parents': ['John', 'Jane'], 'children': ['Paul', 'Mark', 'Simone']}, 'address': {'number': 34, 'street': 'Main Street', 'city': 'Nowheretown', 'zipcode': 12345}}
['John', 'Jane']
--------
name: Silenthand Olleander
race: Human
traits: [ONE_HAND, ONE_EYE]
参考
- 1.https://pyyaml.org/wiki/PyYAMLDocumentation
- 2.https://blog.csdn.net/u013210620/article/details/78618295
长按关注我的公众号哦!