免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3795 | 回复: 4
打印 上一主题 下一主题

求助 有关解析yaml文件的需求 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-11-15 17:28 |只看该作者 |倒序浏览
本帖最后由 ajiankk 于 2010-11-17 17:50 编辑

最近想实现一个功能 需要用到yaml格式 因为这个有一个层的关系 还有一个反向的获取的需求  可能这样说有点晕 我先举个例子

如配置文件为
a.conf:
  - platform: test1
    IP: 1.1.1.1
b.conf:
- platform: test1
   IP: 2.2.2.2,3.3.3.3

- platform: test2
   IP: 1.1.1.1 4.4.4.4
简单的说 a.conf 文件在 平台 test1上的配置文件为 a_test1.conf 对应的IP是1.1.1.1  b.conf 对应的b_test1.conf 在IP 2.2.2.2 和 3.3.3.3面  依此类推
反之
要得到 IP 1.1.1.1 包含的文件有a_test1.conf和 b_test2.conf   IP 2.2.2.2 对应的有b_test2.conf  依此类推

一句话就是希望通过这个表得到 配置文件对应的IP关系 和IP对应的配置文件关系

有没有解析过这类配置文件 可以提供点建议或者方法   

因为我学python还没有多久 所以很多东西还不太熟悉 希望各位大师帮下 或者给我一些解决思路  先谢谢了。

配置文件我理解有问题现在进行下更改:
a.conf:
    platform_test1:
        IP: 1.1.1.1
b.conf:
   platform_test1:
       IP: 2.2.2.2,3.3.3.3
   platform_test2:
       IP: 1.1.1.1,4.4.4.4
这样就可以使用
f = open('/tmp/test.yml')
config = yaml.load(f)
print config
print ""
print config['a.conf']['platform_test1']['IP']
就可以找到自己要的值

现在还有个问题是 如果进行反向解析  即知道1.1.1.1这个IP 找到相应的platform_test1 下的a.conf 和 platform_test2下的b.conf

论坛徽章:
0
2 [报告]
发表于 2010-11-16 22:05 |只看该作者
看了一下你的要求,想问用ini格式可以不?这个刚好可以完成你要的,你可以import ConfigParser,或者用dict4ini也可以。

论坛徽章:
0
3 [报告]
发表于 2010-11-17 10:25 |只看该作者
回复 2# icyomik


    ini好像不支持层级关系吧 因为这个配置可能还会有多个的层级关系  如配置文件是mysql_platform1_16G.cnf   mysql_platform1_32G.cnf  就是三层的关系了  

现在对于我的问题是 可以把这个配置文件yaml.load出来
In [4]: print datamap
------> print(datamap)
{'b.conf': [{'platform': 'test1', 'IP': '2.2.2.2,3.3.3.3'}, {'platform': 'test2', 'IP': '1.1.1.1 4.4.4.4'}], 'a.conf': [{'platform': 'test1', 'IP': '1.1.1.1'}]}

而且可以取到最KEY值

In [5]: print datamap["a.conf"]
------> print(datamap["a.conf"])
[{'platform': 'test1', 'IP': '1.1.1.1'}]

但是 [{'platform': 'test1', 'IP': '1.1.1.1'}]  并不完成是 dictory的格式 还需要去掉[]  不知道有没直接的函数可以做到   

另外最麻烦的反向获取不知道如何来做。

论坛徽章:
0
4 [报告]
发表于 2010-11-17 17:51 |只看该作者
有了新的进展  还有童鞋可以帮忙看下后面的问题吗?

论坛徽章:
0
5 [报告]
发表于 2010-11-18 11:24 |只看该作者
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP