Python中的ConfigParser模块使用详解
1.基本的读取配置文件
-read(filename)直接读取ini文件内容
-sections()得到所有的section,并以列表的形式返回
-options(section)得到该section的所有option
-items(section)得到该section的所有键值对
-get(section,option)得到section中option的值,返回为string类型
-getint(section,option)得到section中option的值,返回为int类型,还有相应的getboolean()和getfloat()函数。
2.基本的写入配置文件
-add_section(section)添加一个新的section
-set(section,option,value)对section中的option进行设置,需要调用write将内容写入配置文件。
3.基本例子
test.conf [sec_a] a_key1=20 a_key2=10 [sec_b] b_key1=121 b_key2=b_value2 b_key3=$r b_key4=127.0.0.1
parse_test_conf.py
importConfigParser
cf=ConfigParser.ConfigParser()
#readconfig
cf.read("test.conf")
#returnallsection
secs=cf.sections()
print'sections:',secs
opts=cf.options("sec_a")
print'options:',opts
kvs=cf.items("sec_a")
print'sec_a:',kvs
#readbytype
str_val=cf.get("sec_a","a_key1")
int_val=cf.getint("sec_a","a_key2")
print"valueforsec_a'sa_key1:",str_val
print"valueforsec_a'sa_key2:",int_val
#writeconfig
#updatevalue
cf.set("sec_b","b_key3","new-$r")
#setanewvalue
cf.set("sec_b","b_newkey","new-value")
#createanewsection
cf.add_section('a_new_section')
cf.set('a_new_section','new_key','new_value')
#writebacktoconfigurefile
cf.write(open("test.conf","w"))
得到终端输出:
sections:['sec_b','sec_a']
options:['a_key1','a_key2']
sec_a:[('a_key1',"i'mvalue"),('a_key2','22')]
valueforsec_a'sa_key1:i'mvalue
valueforsec_a'sa_key2:22
更新后的test.conf
[sec_b] b_newkey=new-value b_key4=127.0.0.1 b_key1=121 b_key2=b_value2 b_key3=new-$r [sec_a] a_key1=i'mvalue a_key2=22 [a_new_section] new_key=new_value
4.Python的ConfigParserModule中定义了3个类对INI文件进行操作。分别是RawConfigParser、ConfigParser、SafeConfigParser。RawCnfigParser是最基础的INI文件读取类,ConfigParser、SafeConfigParser支持对%(value)s变量的解析。
设定配置文件test2.conf
[portal] url=http://%(host)s:%(port)s/Portal host=localhost port=8080
使用RawConfigParser:
importConfigParser
cf=ConfigParser.RawConfigParser()
print"useRawConfigParser()read"
cf.read("test2.conf")
printcf.get("portal","url")
print"useRawConfigParser()write"
cf.set("portal","url2","%(host)s:%(port)s")
printcf.get("portal","url2")
得到终端输出:
useRawConfigParser()read http://%(host)s:%(port)s/Portal useRawConfigParser()write %(host)s:%(port)s
改用ConfigParser:
importConfigParser
cf=ConfigParser.ConfigParser()
print"useConfigParser()read"
cf.read("test2.conf")
printcf.get("portal","url")
print"useConfigParser()write"
cf.set("portal","url2","%(host)s:%(port)s")
printcf.get("portal","url2")
得到终端输出:
useConfigParser()read http://localhost:8080/Portal useConfigParser()write localhost:8080
改用SafeConfigParser:
importConfigParser
cf=ConfigParser.SafeConfigParser()
print"useSafeConfigParser()read"
cf.read("test2.conf")
printcf.get("portal","url")
print"useSateConfigParser()write"
cf.set("portal","url2","%(host)s:%(port)s")
printcf.get("portal","url2")
得到终端输出(效果同ConfigParser):
useSafeConfigParser()read http://localhost:8080/Portal useSateConfigParser()write localhost:8080