测试配置文件test.conf内容如下:
[first]
w = 2
v: 3
c =11-3
[second]
sw=4
test: hello
测试配置文件中有两个区域,first和second,另外故意添加一些空格、换行。
下面解析:
>>> import ConfigParser
>>> conf=ConfigParser.ConfigParser()
>>> conf.read('test.conf')
['test.conf']
>>> conf.sections() #获得所有区域
['first', 'second']
>>> for sn in conf.sections():
... print conf.options(sn) #打印出每个区域的所有属性
...
['w', 'v', 'c']
['sw', 'test']
获得每个区域的属性值:
for sn in conf.sections():
print sn,'-->'
for attr in conf.options(sn):
print attr,'=',conf.get(sn,attr)
输出:
first -->
w = 2
v = 3
c = 11-3
second -->
sw = 4
test = hello
好了,以上就是基本的使用过程,下面是动态的写入配置,
cfd=open('test2.ini','w')
conf=ConfigParser.ConfigParser()
conf.add_section('test') #add a section
conf.set('test','run','false')
conf.set('test','set',1)
conf.write(cfd)
cfd.close()
1 基本的读取配置文件-read(filename) 直接读取ini文件内容-sections() 得到所有的section,并以列表的形式返回-options(section) 得到
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
import ConfigParser cf = ConfigParser.ConfigParser() #read config cf.read( "test.conf" ) # return all section secs = cf.sections() print 'sections:' , secs opts = cf.options( "sec_a" ) print 'options:' , opts kvs = cf.items( "sec_a" ) print 'sec_a:' , kvs #read by type str_val = cf.get( "sec_a" , "a_key1" ) int_val = cf.getint( "sec_a" , "a_key2" ) print "value for sec_a's a_key1:" , str_val print "value for sec_a's a_key2:" , int_val #write config #update value cf. set ( "sec_b" , "b_key3" , "new-$r" ) #set a new value cf. set ( "sec_b" , "b_newkey" , "new-value" ) #create a new section cf.add_section( 'a_new_section' ) cf. set ( 'a_new_section' , 'new_key' , 'new_value' ) #write back to configure file cf.write( open ( "test.conf" , "w" )) |
得到终端输出:
sections: [ 'sec_b' , 'sec_a' ] options: [ 'a_key1' , 'a_key2' ] sec_a: [( 'a_key1' , "i'm value" ), ('a_key2 ', ' 22')] value for sec_a 's a_key1: i' m value value for sec_a's a_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'm value a_key2 = 22 [a_new_section] new_key = new_value |
4.Python的ConfigParser Module中定义了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:
import ConfigParser cf = ConfigParser.RawConfigParser() print "use RawConfigParser() read" cf.read( "test2.conf" ) print cf.get( "portal" , "url" ) print "use RawConfigParser() write" cf. set ( "portal" , "url2" , "%(host)s:%(port)s" ) print cf.get( "portal" , "url2" ) |
得到终端输出:
use RawConfigParser() read http: // %(host)s:%(port)s /Portal use RawConfigParser() write %(host)s:%(port)s |
改用ConfigParser:
import ConfigParser cf = ConfigParser.ConfigParser() print "use ConfigParser() read" cf.read( "test2.conf" ) print cf.get( "portal" , "url" ) print "use ConfigParser() write" cf. set ( "portal" , "url2" , "%(host)s:%(port)s" ) print cf.get( "portal" , "url2" ) |
得到终端输出:
use ConfigParser() read http: //localhost :8080 /Portal use ConfigParser() write localhost:8080 |
改用SafeConfigParser:
import ConfigParser cf = ConfigParser.SafeConfigParser() print "use SafeConfigParser() read" cf.read( "test2.conf" ) print cf.get( "portal" , "url" ) print "use SateConfigParser() write" cf. set ( "portal" , "url2" , "%(host)s:%(port)s" ) print cf.get( "portal" , "url2" ) |
得到终端输出(效果同ConfigParser):
use SafeConfigParser() read http: //localhost :8080 /Portal use SateConfigParser() write localhost:8080 |
ConfigParser 是Python自带的模块, 用来读写配置文件, 用法及其简单。 直接上代码,不解释,不多说。
配置文件的格式是: []包含的叫section, section 下有option=value这样的键值
配置文件 test.conf
[section1] name = tank age = 28 [section2] ip = 192.168.1.1 port = 8080
Python代码
# -* - coding: UTF-8 -* - import ConfigParser conf = ConfigParser.ConfigParser() conf.read("c:\\test.conf") # 获取指定的section, 指定的option的值 name = conf.get("section1", "name") print(name) age = conf.get("section1", "age") print age #获取所有的section sections = conf.sections() print sections #写配置文件 # 更新指定section, option的值 conf.set("section2", "port", "8081") # 写入指定section, 增加新option的值 conf.set("section2", "IEPort", "80") # 添加新的 section conf.add_section("new_section") conf.set("new_section", "new_option", "http://www.cnblogs.com/tankxiao") # 写回配置文件 conf.write(open("c:\\test.conf","w"))