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
2
3
4
5
6
7
8
9
|
[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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
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"
))
|
得到终端输出:
1
2
3
4
5
|
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
1
2
3
4
5
6
7
8
9
10
11
12
13
|
[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
1
2
3
4
|
[portal]
url = http:
//
%(host)s:%(port)s
/Portal
host = localhost
port = 8080
|
使用RawConfigParser:
1
2
3
4
5
6
7
8
9
10
11
|
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"
)
|
得到终端输出:
1
2
3
4
|
use RawConfigParser()
read
http:
//
%(host)s:%(port)s
/Portal
use RawConfigParser() write
%(host)s:%(port)s
|
改用ConfigParser:
1
2
3
4
5
6
7
8
9
10
11
|
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"
)
|
得到终端输出:
1
2
3
4
|
use ConfigParser()
read
http:
//localhost
:8080
/Portal
use ConfigParser() write
localhost:8080
|
改用SafeConfigParser:
1
2
3
4
5
6
7
8
9
10
11
|
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):
1
2
3
4
|
use SafeConfigParser()
read
http:
//localhost
:8080
/Portal
use SateConfigParser() write
localhost:8080
|