Apr 27, 2010 17:06
Last script version (2010-05-21 12:51):
# -*- coding: cp1251 -*-
import re
regexStart = re.compile('\[\[')
regexEnd = re.compile('\]\]')
regexSection = re.compile(r''' *\b[a-zA-Z_]+\b *''')
dictConf={}
sectionBit = False
try :
for line in open('file.ini','r'):
stripLine = line.strip()
if regexStart.search(stripLine) and regexEnd.search(stripLine):
indexConf = stripLine[2:len(stripLine)-2]
if regexSection.search(indexConf):
dictConf[indexConf.strip()]={}
sectionBit = True
else:
sectionBit = False
print 'ERROR: Wrong section name - "%s"' % (indexConf)
elif sectionBit:
splitLine = stripLine.split('=')
if len(splitLine) < 2 or len(splitLine) > 2:
print 'ERROR: Wrong line in section [[%s]] - "%s"' % (indexConf.strip(),splitLine)
# здесь добавить исключение (остановка парсера, возврат
# неправильной строки).
elif len(splitLine) == 2 and splitLine[0] != '':
dictConf[indexConf.strip()][splitLine[0].strip()] = splitLine[1].strip()
print 'Количество секций в ini файле: %s.' % (len(dictConf))
for keys in dictConf.keys():
print 'В секции "%s" кол-во переменных равно %s.' % (keys, len(dictConf[keys]))
print dictConf
except IOError:
print 'Файл не открыт'
Old script version:
# -*- coding: cp1251 -*-
import re
regex = re.compile('^\[\[ *[a-zA-Z0-9]+ *\]\]$')
dictConf={}
sectionBit = False
try :
for line in open('file.ini','r'):
stripLine = line.strip()
if regex.search(stripLine):
indexConf = stripLine[2:len(stripLine)-2]
dictConf[indexConf]={}
sectionBit = True
elif sectionBit:
splitLine = stripLine.split('=')
if len(splitLine) == 2 and splitLine[0] != '':
dictConf[indexConf][splitLine[0].strip()] = splitLine[1].strip()
print 'Количество секций в ini файле: %s.' % (len(dictConf))
for keys in dictConf.keys():
print 'В секции "%s" кол-во переменных равно %s.' % (keys, len(dictConf[keys]))
print dictConf
except IOError:
print 'Файл не открыт'
file.ini:
[[config]]
controlPort=8900
idleTimeout=20
[[admin]]
login = petrovich
email=petrovich@zavod.ru
password=secret
python