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