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.pyimport 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