Pyhton config文件解析
2017-12-26 本文已影响6人
步履不停的Suunny
1、配置文件的格式
一般来讲,配置文件的格式是这样的:
[SectionA] # 方括号里叫做一个section
a = aa # 这里的每一行,等号左侧是一个option,右侧是option的value
b = bb
c = cc
[SectionB]
optionint = 1
optionfloat = 1.1
optionstring = string
注:配置文件是没有注释的,不要乱写,否则读的时候会出错。xml和json也一样 。 需确认!
2、python读取配置文件,使用方法模块ConfigParse
with open(filename, 'r') as fr:
cfg = ConfigParser.ConfigParser()
cfg.readfp(fr)
这就读好了。下面的工作就是解析cfg。
# 读取所有sections:
secs = cfg.sections() # ['SectionA', 'SectionB']
结果得到section的列表。
# 读取某一个section里面的所有options
ops0 = cfg.options(secs[0]) # ['a', 'b', 'c']
结果得到所有options的列表。
获得option和value的键值对, ——直接使用items就好了:
ops1 = cfg.items(secs[1])
print ops1 #获得的是一个列表。
[('optionint', '1'), ('optionfloat', '1.1'), ('optionstring', 'string')]
希望把它当做字典来用的话,需要dict(ops1)
如果只想获得某一个option的值怎么办呢?可以用一系列get的方法:
print cfg.getint(secs[1], 'optionint') # 1
print cfg.getfloat(secs[1], 'optionfloat') # 1.1
print cfg.get(secs[1], 'optionstring') # string
以上就是ConfigPhaser模块的简单用法。然而这个模块并不只是能简单的读取配置文件,还可以动态的添加内容,用法如下:
cfg.add_section('SectionC')
cfg.set('SectionC', 'ex', 'example')
或者删除配置:
cfg.remove_option('SectionC', 'ex')
cfg.remove_section('SectionC')
然后
with open(filename, 'w') as fw:
cfg.write(fw)
这样就把配置写回到配置文件里去了