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