Python 解析配置模块之ConfigParser详解
2014-11-20 13:35:36
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
1 [sec_a] 2 a_key1 = 20 3 a_key2 = 10
4 5 [sec_b] 6 b_key1 = 121 7 b_key2 = b_value2 8 b_key3 = $r 9 b_key4 = 127.0.0.1
parse_test_conf.py
1 import ConfigParser
2 cf = ConfigParser.ConfigParser() 3 #read config 4 cf.read(\) 5 # return all section 6 secs = cf.sections() 7 print 'sections:', secs 8
9 opts = cf.options(\) 10 print 'options:', opts 11
12 kvs = cf.items(\) 13 print 'sec_a:', kvs 14
15 #read by type
16 str_val = cf.get(\, \) 17 int_val = cf.getint(\, \) 18
19 print \, str_val 20 print \, int_val 21
22 #write config 23 #update value
24 cf.set(\, \, \) 25 #set a new value
26 cf.set(\, \, \) 27 #create a new section 28 cf.add_section('a_new_section')
29 cf.set('a_new_section', 'new_key', 'new_value') 30
31 #write back to configure file 32 cf.write(open(\, \))
得到终端输出:
1 sections: ['sec_b', 'sec_a'] 2 options: ['a_key1', 'a_key2']
3 sec_a: [('a_key1', \), ('a_key2', '22')] 4 value for sec_a's a_key1: i'm value 5 value for sec_a's a_key2: 22
更新后的test.conf
1 [sec_b]
2 b_newkey = new-value 3 b_key4 = 127.0.0.1 4 b_key1 = 121 5 b_key2 = b_value2 6 b_key3 = new-$r 7 8 [sec_a]
9 a_key1 = i'm value 10 a_key2 = 22 11
12 [a_new_section] 13 new_key = new_value
4.Python的ConfigParser Module中定义了3个类对INI文件进行操作。分别是RawConfigParser、ConfigParser、SafeConfigParser。RawCnfigParser是最基础的INI文件读取类,ConfigParser、SafeConfigParser支持对%(value)s变量的解析。 设定配置文件test2.conf
1 [portal]
2 url = http://%(host)s:%(port)s/Portal 3 host = localhost 4 port = 8080
使用RawConfigParser:
1 import ConfigParser 2
3 cf = ConfigParser.RawConfigParser() 4
5 print \ 6 cf.read(\) 7 print cf.get(\, \) 8
9 print \ 10 cf.set(\, \, \) 11 print cf.get(\, \)
得到终端输出:
1 use RawConfigParser() read 2 http://%(host)s:%(port)s/Portal 3 use RawConfigParser() write