原文鏈接:https://www.cnblogs.com/bert227/p/9326313.html
ConfigParser模塊在python中是用來讀取配置文件,配置文件的格式跟windows下的ini配置文件相似,可以包含一個或多個節(section),每個節可以有多個參數(鍵=值)。
注意:在python 3 中ConfigParser模塊名已更名為configparser
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
34
35
36
37
38
39
40
41
42
|
config.read(
'example.ini'
,encoding
=
"utf-8"
)
"""讀取配置文件,python3可以不加encoding"""
options(section)
"""sections(): 得到所有的section,並以列表的形式返回"""
config.defaults()
"""defaults():返回一個包含實例范圍默認值的詞典"""
config.add_section(section)
"""添加一個新的section"""
config.has_section(section)
"""判斷是否有section"""
print
(config.options(section))
"""得到該section的所有option"""
has_option(section, option)
"""判斷如果section和option都存在則返回True否則False"""
read_file(f, source
=
None
)
"""讀取配置文件內容,f必須是unicode"""
read_string(string, source
=
’’)
"""從字符串解析配置數據"""
read_dict(dictionary, source
=
’’)
"""從詞典解析配置數據"""
get(section, option,
*
, raw
=
False
,
vars
=
None
[, fallback])
"""得到section中option的值,返回為string類型"""
getint(section,option)
"""得到section中option的值,返回為int類型"""
getfloat(section,option)
"""得到section中option的值,返回為float類型"""
getboolean(section, option)
"""得到section中option的值,返回為boolean類型"""
items(raw
=
False
,
vars
=
None
)
"""和items(section, raw=False, vars=None):列出選項的名稱和值"""
set
(section, option, value)
"""對section中的option進行設置"""
write(fileobject, space_around_delimiters
=
True
)
"""將內容寫入配置文件。"""
remove_option(section, option)
"""從指定section移除option"""
remove_section(section)
"""移除section"""
optionxform(option)
"""將輸入文件中,或客戶端代碼傳遞的option名轉化成內部結構使用的形式。默認實現返回option的小寫形式;"""
readfp(fp, filename
=
None
)
"""從文件fp中解析數據"""
|
生成configparser文件實例
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
import
configparser
#配置文件
config
=
configparser.ConfigParser()
"""生成configparser配置文件 ,字典的形式"""
"""第一種寫法"""
config[
"DEFAULT"
]
=
{
'ServerAliveInterval'
:
'45'
,
'Compression'
:
'yes'
,
'CompressionLevel'
:
'9'
}
"""第二種寫法"""
config[
'bitbucket.org'
]
=
{}
config[
'bitbucket.org'
][
'User'
]
=
'hg'
"""第三種寫法"""
config[
'topsecret.server.com'
]
=
{}
topsecret
=
config[
'topsecret.server.com'
]
topsecret[
'Host Port'
]
=
'50022'
# mutates the parser
topsecret[
'ForwardX11'
]
=
'no'
# same here
config[
'DEFAULT'
][
'ForwardX11'
]
=
'yes'
"""寫入后綴為.ini的文件"""
with
open
(
'example.ini'
,
'w'
) as configfile:
config.write(configfile)
|
運行結果:
1
2
3
4
5
6
7
8
9
10
11
12
|
[DEFAULT]
serveraliveinterval
=
45
compression
=
yes
compressionlevel
=
9
forwardx11
=
yes
[bitbucket.org]
user
=
hg
[topsecret.server.com]
host port
=
50022
forwardx11
=
no
|
讀取configparser配置文件的實例
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
|
import
configparser
#配置文件
config
=
configparser.ConfigParser()
config.read(
"example.ini"
)
print
(
"所有節點==>"
,config.sections())
print
(
"包含實例范圍默認值的詞典==>"
,config.defaults())
for
item
in
config[
"DEFAULT"
]:
print
(
"循環節點topsecret.server.com下所有option==>"
,item)
print
(
"bitbucket.org節點下所有option的key,包括默認option==>"
,config.options(
"bitbucket.org"
))
print
(
"輸出元組,包括option的key和value"
,config.items(
'bitbucket.org'
))
print
(
"bitbucket.org下user的值==>"
,config[
"bitbucket.org"
][
"user"
])
#方式一
topsecret
=
config[
'bitbucket.org'
]
print
(
"bitbucket.org下user的值==>"
,topsecret[
"user"
])
#方式二
print
(
"判斷bitbucket.org節點是否存在==>"
,
'bitbucket.org'
in
config)
print
(
"獲取bitbucket.org下user的值==>"
,config.get(
"bitbucket.org"
,
"user"
))
print
(
"獲取option值為數字的:host port="
,config.getint(
"topsecret.server.com"
,
"host port"
))
|
運行結果
1
2
3
4
5
6
7
8
9
10
11
12
13
|
所有節點
=
=
> [
'bitbucket.org'
,
'topsecret.server.com'
]
包含實例范圍默認值的詞典
=
=
> OrderedDict([(
'serveraliveinterval'
,
'45'
), (
'compression'
,
'yes'
), (
'compressionlevel'
,
'9'
), (
'forwardx11'
,
'yes'
)])
循環節點topsecret.server.com下所有option
=
=
> serveraliveinterval
循環節點topsecret.server.com下所有option
=
=
> compression
循環節點topsecret.server.com下所有option
=
=
> compressionlevel
循環節點topsecret.server.com下所有option
=
=
> forwardx11
bitbucket.org節點下所有option的key,包括默認option
=
=
> [
'user'
,
'serveraliveinterval'
,
'compression'
,
'compressionlevel'
,
'forwardx11'
]
輸出元組,包括option的key和value [(
'serveraliveinterval'
,
'45'
), (
'compression'
,
'yes'
), (
'compressionlevel'
,
'9'
), (
'forwardx11'
,
'yes'
), (
'user'
,
'hg'
)]
bitbucket.org下user的值
=
=
> hg
bitbucket.org下user的值
=
=
> hg
判斷bitbucket.org節點是否存在
=
=
>
True
獲取bitbucket.org下user的值
=
=
> hg
獲取option值為數字的:host port
=
50022
|
刪除配置文件section和option的實例(默認分組有參數時無法刪除,但可以先刪除下面的option,再刪分組)
1
2
3
4
5
6
7
8
|
import
configparser
#配置文件
config
=
configparser.ConfigParser()
config.read(
"example.ini"
)
config.remove_section(
"bitbucket.org"
)
"""刪除分組"""
config.remove_option(
"topsecret.server.com"
,
"host port"
)
"""刪除某組下面的某個值"""
config.write(
open
(
'example.ini'
,
"w"
))
|
運行結果
1
2
3
4
5
6
7
8
|
[DEFAULT]
serveraliveinterval
=
45
compression
=
yes
compressionlevel
=
9
forwardx11
=
yes
[topsecret.server.com]
forwardx11
=
no
|
配置文件的修改實例
1
2
3
4
5
6
7
8
9
|
"""修改"""
import
configparser
config
=
configparser.ConfigParser()
config.read(
"example.ini"
)
config.add_section(
"new_section"
)
"""新增分組"""
config.
set
(
"DEFAULT"
,
"compressionlevel"
,
"110"
)
"""設置DEFAULT分組下compressionlevel的值為110"""
config.write(
open
(
'example.ini'
,
"w"
))
|
運行結果
1
2
3
4
5
6
7
8
9
10
|
[DEFAULT]
serveraliveinterval
=
45
compression
=
yes
compressionlevel
=
110
forwardx11
=
yes
[topsecret.server.com]
forwardx11
=
no
[new_section]
|