#!/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'
以上的格式自己调试一下啦。