最近在看代码时发现有人用Yaml —— Yet Another Markup Language :另一种标记语言。编程免不了要写配置文件,怎么写配置也是一门学问。YAML 是专门用来写配置文件的语言,非常简洁和强大,远比 JSON 格式方便。
YAML在python语言中有PyYAML安装包。YAML 语言(发音 /ˈjæməl/ )的设计目标,就是方便人类读写。它实质上是一种通用的数据串行化格式。yaml是一种比xml和json更轻的文件格式,也更简单更强大,它可以通过缩进来表示结构,听着就和Python很配对不对?
PyYaml
PyYaml是Python的一个专门针对yaml文件操作的模块,使用起来非常简单
- 安装
pip install pyyaml
。或者到下载相应版本的包,人工安装。 - 使用:使用起来非常简单,就像json、pickle一样,load、dump就足够我们使用了。
- load()
结果:import yaml yaml_str = """ name: 灰蓝 age: 0 job: Tester """ y = yaml.load(yaml_str) print y
{'job': 'Tester', 'age': 0, 'name': u'\u7070\u84dd'}
- dump()
输出结果:import yaml python_obj = { "name": u"灰蓝", "age": 0, "job": "Tester" } y = yaml.dump(python_obj, default_flow_style=False) print y
上面只是简单的两个应用,还有 load_all()、dump_all() 等,我们一般用这四个足够了,另外两个下面会讲到,其他方法可以自己看API。age: 0 job: Tester name: "\u7070\u84DD"
yaml语法
https://www.ibm.com/developerworks/cn/xml/x-cn-yamlintro/
有了上面的基础,接下来我们看看yaml的语法,首先我们准备下测试语法的环境:
-
创建 test.yaml 文件,我们练习语法就在这里
-
创建 testyaml.py 文件,用来查看Python执行后的效果,其中内容如下:
# -*- coding: utf-8 -*-
import yaml
y = yaml.load(file('test.yaml', 'r'))
print y
1. 基本规则
- 大小写敏感
- 使用缩进表示层级关系
- 缩进时不允许使用Tab,只允许使用空格
- 缩进的空格数目不重要,只要相同层级的元素左对齐即可
- # 表示注释,从它开始到行尾都被忽略
2. yaml转字典
yaml中支持映射或字典的表示,如下:
在test.yaml文件中: