python解析yaml文件

系统:ubuntu1404、python:2.7

  1. 解析yaml文件要先安装pyyaml,可以直接用sudo pip  install  pyyaml 安装yaml模块;

  2. t.yaml文件内容:隔距为2个空格或4个空格

t.yaml" 10L, 143C                            1,1           All
host:
    ip00:
        192.168.1.1
    ip01:
        one: 192.168.1.2
        two: 192.168.1.254
soft:
    apache: 2.2
    mysql: 5.2
    php:   5.3

3.解析:

In [160]: import  yaml               #倒入模块
In [161]: s=yaml.load(file('t.yaml')) #加载t.yaml配置文件
In [162]: print s['host']['ip00'][:]
192.168.1.1

In [163]: print s['host']['ip00']
192.168.1.1

In [164]: print s['host']
{'ip01': {'two': '192.168.1.254', 'one': '192.168.1.2'}, 
 'ip00': '192.168.1.1'}

In [165]: print s
{'host': {'ip01': {'two': '192.168.1.254', 'one': '192.168.1.2'}, 
'ip00': '192.168.1.1'}, 'soft': {'apache': 2.2, 'php': 5.3, 'mysql': 5.2}}

In [166]: print s['host']['ip00']
192.168.1.1

In [167]: print s['host']['ip01']
{'two': '192.168.1.254', 'one': '192.168.1.2'}

In [168]: print s['host']['ip01']['one']
192.168.1.2

In [169]: print s['soft']
{'apache': 2.2, 'php': 5.3, 'mysql': 5.2}

n [171]: print s['soft']['apache']
2.2

In [172]: print s['soft']['php']
5.3

4.写yaml配置文件:

file='kkk.yaml'
data={'host': {'ip01': {'two': '192.168.1.254', 'one': '192.168.1.2'}, 'ip00': '192.168.1.1'}, 'soft': {'apache': 2.2, 'php': 5.3, 'mysql': 5.2}}

f=open(file,'w')
yaml.dump(data,f)
f.close()

-------------------------------------------------------------------------------------------------------------------

yaml解析完善版:

__author__ = 'Administrator'
#py34,ymal解析比较完善的,,,字典、列表可相互嵌套,相互交叉递归
#2015-1-4   jk409@qq.com
import yaml
filename = 'E:\\py\\script\\py34\\sql\\t.yaml'
f = open(filename)
s = yaml.load(f)
f.close()
def jx_list(i):
    for n in i:
        if type(n) == list:
            jx_list([n])
            print(i, n)
        elif type(n) == dict:
            jx_dict(n)
        else:
            print(n)

def jx_dict(i):
    for n in i:
        if type(i[n]) == dict:
            jx_dict(i[n])
        elif type(i[n]) == list:
            jx_list(i[n])
            pass
        else:
            print(n, i[n])

if __name__ == "__main__":
    for i in s:
        if type(s[i]) == dict:
            jx_dict(s[i])
        if type(s[i]) == list:
            jx_list(s[i])



转载于:https://my.oschina.net/jk409/blog/317759

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值