最近在学习ConfigParser模块读取配置文件 ,从网上搜来的东西,记录一下。:
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.基本例子
1
2
3
4
5
6
7
8
9
10
|
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
|
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
33
|
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"
))
|
得到终端输出:
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
|