前面的文章中提到,对YAML文件的格式检查,除了IDE插件和在线的工具之外,直接使用各种语言的YAML模块也可以实现相同的功能,这篇文章将使用python的yaml模块对前文中提及到的YAML示例进行说明。
YAML在很多语言中已经有相关的模块或者库函数对YAML进行支持,很多语言中有多个支持的库函数,比如常见的编程语言与YAML模块如下所示:
编程语言 | yaml模块 |
---|---|
C语言 | libYAML |
go语言 | go-yaml |
java语言 | jvyaml或者JYaml |
javascript语言 | js-yaml |
python语言 | PyYAML |
… | – |
liumiaocn:yaml liumiao$ cat printyaml.py
#!/usr/bin/env python
import sys,yaml
yamlfilename=sys.argv[1]
with open(yamlfilename,'r') as filehandle:
print(yaml.load(filehandle.read()))
liumiaocn:yaml liumiao$
代码说明:
主要使用yaml.load加载YAML文件,然后以python的数据格式方式进行展示,从而方便使用python对YAML中的数据进行读取操作
本文示例中使用python的pyyaml的yaml.load进行演示,由于使用的是Anaconda的python开发环境,pyyaml模块信息如下所示:
liumiaocn:yaml liumiao$ conda list pyyaml
# packages in environment at /anaconda2:
#
# Name Version Build Channel
pyyaml 3.12 py27ha7932d0_1
liumiaocn:yaml liumiao$
liumiaocn:~ liumiao$ python
Python 2.7.15 |Anaconda, Inc.| (default, May 1 2018, 18:37:05)
[GCC 4.2.1 Compatible Clang 4.0.1 (tags/RELEASE_401/final)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import yaml
>>> yaml.__file__
'/anaconda2/lib/python2.7/site-packages/yaml/__init__.pyc'
>>> yaml.__version__
'3.12'
>>>
liumiaocn:yaml liumiao$ cat demo/yamlcomment.yml
--- #Yaml sample usage: dictionary & comment
# Yaml Sample usage
# key/value pair
# name and greeting messages
name: liumiaocn
greetingmessages: hello
...
liumiaocn:yaml liumiao$
liumiaocn:yaml liumiao$ python printyaml.py demo/yamlcomment.yml
{'name': 'liumiaocn', 'greetingmessages': 'hello'}
liumiaocn:yaml liumiao$