在Python使用yaml的几个例子

python版本:2.7.5

安装方法:pip install PyYaml

“把变量写进yaml做配置文件,然后python脚本从yaml文件里面取到变量”的方法最近是在python编程里比较流行的配置项方法。yaml更加易读,而且通过缩进表示结构,这一点与python不谋而合。

Yaml有四个比较常用的用法,分别是load()、dump()、load_all()、dump_all()。这篇文章主要就是了解一下这四个方法。

首先我们先写一个很简单的test.py:

# -*- coding: utf-8 -*-
#!/usr/bin/env python
import yaml

yaml_str = """
name: Gakki
age: 29
job: Actress
relationship: Wife
"""

aaa = yaml.load(yaml_str)
print aaa

执行的话,看到的效果就是:

[[email protected] chentest]# python test.py 
{'job': 'Actress', 'age': 29, 'relationship': 'Wife', 'name': 'Gakki'}

这个aaa的类型是一个字典(dict),如果要得到里面那个"Gakki",那么就是aaa['name']。通过load方法,一个字符串变成了一个字典。


现在把test.py换成如下:

# -*- coding: utf-8 -*-
#!/usr/bin/env python
import yaml

yaml_dict = {"name": "Gakki",
         "age": 29,
         "job": "Actress",
         "relationship": "Wife"
              }
aaa = yaml.dump(yaml_dict, default_flow_style=False)
print aaa
print (type(aaa))

执行后的效果如下:

[[email protected] chentest]# python test.py 
age: 29
job: Actress
name: Gakki
relationship: Wife
<type 'str'>

可见,通过dump方法,把一个dict变成了一个字符串。

现在写一个配置文件,假如它叫test.yaml:

- Gakki
- 29
- Actress
- Wife

再来一个test.py,内容如下:

# -*- coding: utf-8 -*-
#!/usr/bin/env python
import yaml

aaa = yaml.load(file('test.yaml', 'r'))
print aaa
print (type(aaa))

执行这个test.py:

[[email protected] chentest]# python test.py 
['Gakki', 29, 'Actress', 'Wife']
<type 'list'>    #得到了一个列表

如果把那个test.yaml升级成字典和列表的混合结构,如下:

- name: Chris
  age: 29
  job: OM Engineer
- name: Gakki
  age: 29
  job: Actress
  relationship: Wife

执行test.py的效果如下:

[[email protected] chentest]# python test.py 
[{'job': 'OM Engineer', 'age': 29, 'name': 'Chris'}, {'job': 'Actress', 'age': 29, 'relationship': 'Wife', 'name': 'Gakki'}]
<type 'list'>

既然获得的结果是一个包含字典的列表,那么如果要获得“Gakki”就是aaa[1]['name']

如果想要复制和引用,那么要用&和*,比如把test.yaml改成这样:

name: &name Gakki
wife: *name

执行test.py的效果如下:

[[email protected] chentest]# python test.py 
{'name': 'Gakki', 'wife': 'Gakki'}
<type 'dict'>

在同一个yaml文件中,可以用 --- 来分段,这样可以将多个文档写在一个文件中:

---
  name: Chris
  age: 29
  job: OM Engineer
---
  name: Gakki
  age: 29
  job: Actress
  relationship: Wife

在写一个新的test.py如下:

# -*- coding: utf-8 -*-
#!/usr/bin/env python
import yaml
ys = yaml.load_all(file('gakki.yaml', 'r'))    #load_all() 方法会生成一个迭代器,可以用for输出出来
for y in ys:
    print y

执行这个py的效果:

[[email protected] chentest]# python test.py 
{'job': 'OM Engineer', 'age': 29, 'name': 'Chris'}
{'job': 'Actress', 'age': 29, 'relationship': 'Wife', 'name': 'Gakki'}

参考文档:https://huilansame.github.io/huilansame.github.io/archivers/recommond-case-file-type-yaml

时间: 2024-10-16 02:58:52

在Python使用yaml的几个例子的相关文章

对python生成器特性使用的好例子

1.对序列进行分组的函数(摘自web.py源码utils.py文件中) 1 def group(seq, size): 2 """ 3 Returns an iterator over a series of lists of length size from iterable. 4 5 >>> list(group([1,2,3,4], 2)) 6 [[1, 2], [3, 4]] 7 >>> list(group([1,2,3,4,5]

Python读取Yaml文件

近期看到好多使用Yaml文件做为配置文件或者数据文件的工程,随即也研究了下,发现Yaml有几个优点:可读性好.和脚本语言的交互性好(确实非常好).使用实现语言的数据类型.有一个一致的数据模型.易于实现. 既然有这么多好处,为什么不用呢,随后开始研究在Python中怎么读取Yaml文件,下面我们来看下: 1.首先需要下载Python的yaml库PyYAML,下载地址:http://pyyaml.org/,安装过程就省略...... 2.建立一个.py文件 3.import yaml 4.f = o

python获取图片base64编码的例子

用python语言获得图片的Base64编码. #!/usr/bin/env python # -*- coding: utf-8 -*- # www.jbxue.com import os, base64 icon = open('ya.png','rb') iconData = icon.read() iconData = base64.b64encode(iconData) LIMIT = 60 liIcon = [] while True: sLimit = iconData[:LIMI

python分析apahce网站日志的例子

有关python实现apahce网站日志分析的方法. 应用到:shell与python数据交互.数据抓取,编码转换 #coding:utf-8 #!/usr/bin/python'''程序说明:apache access.log日志分析 分析访问网站IP 来源情况 日期:2014-01-06 17:01 author:gyh9711 程序说明:应用到:shell与python数据交互.数据抓取,编码转换'''import osimport jsonimport httplibimport cod

[Python]Python 使用 for 循环的小例子

[Python]Python 使用 for 循环的小例子: In [7]: for i in range(5): ...: print "xxxx" ...: print "yyyy" ...: xxxxyyyyxxxxyyyyxxxxyyyyxxxxyyyyxxxxyyyy

使用python读取yaml文件

在做APP测试时,通常需要把参数存到一个字典变量中,这时可以将参数写入yaml文件中,再读取出来. 新建yaml文件(android_caps.yaml),文件内容为: 1 platformName: Android 2 platformVersion: '5.1' 3 deviceName: Android Emulator 4 appPackage: com.xx.xx 5 appActivity: com.xx.xx.activity.WelcomeActivity python读取yam

python读取yaml配置文件

yaml简介 1.yaml [?j?m?l]: Yet Another Markup Language :另一种标记语言.yaml 是专门用来写配置文件的语言,非常简洁和强大,之前用ini也能写配置文件,看了yaml后,发现这个更直观,更方便,有点类似于json格式 2.yaml基本语法规则: 大小写敏感 使用缩进表示层级关系 缩进时不允许使用Tab键,只允许使用空格. 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可 #表示注释,从这个字符一直到行尾,都会被解析器忽略,这个和python的

python解析yaml文件

YAML语法规则: http://www.ibm.com/developerworks/cn/xml/x-cn-yamlintro/ 下载PyYAML: http://www.yaml.org/ 解压安装: python setup.py install 1.新建test.yaml文件,内容如下: name: Tom Smith age: 37 spouse: name: Jane Smith age: 25 children: - name: Jimmy Smith age: 15 - nam

Python 编写通过DOS压缩的例子遇到的几个问题

在完成backup_ver1.py的例子是,遇到了几个问题. 1.教程上是用zip进行压缩,而本机未安装zip,DOS无法执行zip命令. Solved:换用rar命令执行,其中将C:/Program Files/WinRAR下的Rar.exe拷贝到%SystemRoot%/system32下,这样你就不必设置rar的环境变量,而能直接再cmd 命令提示符下使用rar命令 . 其中rar压缩命令为  rar a filesname.rar filesname 参考http://blog.csdn