python 配置文件解析_python 解析配置文件

#!/usr/bin/env python

#coding=utf-8

#上面来显示中文的。不然中文会出问题

'''

说明:输入的文件,#开头的一行默认是注释符号,这一行不计入处理,其余的都是有效行,有效行遇到#也结束

作者:

最后修改时间:2014-04-22

'''

#import pdb

import fileinput

#pdb.set_trace()

def getName(line):

#找到起始位置,因为格式是name = "A",所以找第一个“

start = line.find('"')

if start == -1:

print 'sorry,your file maybe wrong'

return

#找后一个"的位置,不能直接赋值给end,然后end一个一个自加,因为都是引用,start也会跟着end变化

j = 1

while line[start+j] != '"':

j = j + 1

name = line[start+1:start+j]

return name

def getTabName(line):

#首先找到第一个',',然后回找第一个'/',中间的内容就是B.img,然后取B

end = line.find(',')

if end == -1:

print 'sorry,your file maybe wrong'

return

j = 1

while line[end - j] != '/':

#重新给end赋值,即使A.B.C,最后得到的将是A

if(line[end - j] == '.'):

new_end = end - j

j = j + 1

name = line[end-j+1:new_end]

return name

def compare(names):

for i in range(1,len(names)):

if names[i] != names[0]:

return False

return True

#打印列表

def prin(names):

for name in names:

print name

def do_with_line(config_file):

flag = 0

#名字用列表来存储,第一个是name,后面的是tag一次排序的

names = []

for line in fileinput.input(config_file):

#disk 结束

if line.find(']') == 0:

flag = 0

continue

#处理disk下一行

if flag == 1:

names.append(getTabName(line))

continue

#去掉前后的空格

line = line.rstrip()

#如果是#或者'''开头,直接忽略,因为是注释符号

if line[0] == '#':

continue

#查找name,这个必须在首位,不然认为不是name,name只有一个

if line.find('name') == 0:

name = getName(line)

names.insert(0,name)

#找到disk标志

if line.find('disk') == 0:

flag = 1

continue

return names

if __name__ == '__main__':

config_file = 'xen1.cfg'

names = do_with_line(config_file)

prin(names)

if compare(names) == False:

print 'nonono'

else:

print 'yesyesyes'

以上的格式自己调试一下啦。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值