前言
除了json、xml外yam同样是一种较为常见的项目中所用到的配置文件。这里和大家一起快速入门。
如何书写
我们先来看示例
name: yuhua
occupation: writer
composition:
1991: 在雨中呐喊
1992: 活着
1999:
- 黄昏里男孩
- 现实一种
比如我们现在想把余华的相关信息用yaml表示。就这样简单的使用,
name: yuhua
代表键值对。
如果要书写新的键值对只需再起一行如occupation: writer
即可。如果是多层嵌套,则如上述composition
书写方式即可。
我们来看一下打印结果。
import yaml
if __name__ == '__main__':
with open("hello.yaml", encoding="utf-8") as f:
result = f.read()
x = yaml.load(result, Loader=yaml.FullLoader)
print(x)
{
"name": "yuhua",
"occupation": "writer",
"composition": {
"1991": "在雨中呐喊",
"1992": "活着",
"1999": [
"黄昏里男孩",
"现实一种"
]
}
}
其中回车空格代表下一级,而回车空格加 -
则代表列表。是不是很简单。
如何写入
同样十分简单,我们只需要修改后覆盖写入即可。
x['composition'][1999].append("许三观卖血记")
with open("hello.yaml", 'w', encoding='utf-8') as w_f:
# 覆盖原先的配置文件
yaml.dump(x, w_f, allow_unicode=True)
这样就写回来了,注意这时候如果不加这个参数allow_unicode=True
中文则会乱码。
如何保证顺序
其实我们也可以看到虽然我们只改变了一个值,但是yaml文件的顺序却发生了改变。有时候我们并不想让yaml文件的顺便发生改变,这个时候再我们写入的时候则需要加入。
sort_keys=False
with open("hello.yaml", 'w', encoding='utf-8') as w_f:
# 覆盖原先的配置文件
yaml.dump(x, w_f, allow_unicode=True, sort_keys=False)
这样即可保证原本的顺序。