configparser模块的特点和用法
一、概述
主要用于生成和修改常见配置文件,当前模块的名称在 python 3.x 版本中变更为 configparser。在python2.x版本中为ConfigParser
二、格式
常见配置文件格式如下:
[DEFAULT]
serveraliveinterval = 45
compression = yes
compressionlevel = 9
forwardx11 = yes [bitbucket.org]
user = hg [topsecret.server.com]
host port = 50022
forwardx11 = no
三、主要用法
1、创建配置文件
import configparser #导入configparser模块 #生成一个对象
config = configparser.ConfigParser()
#配置默认全局配置组
config["DEFALUT"] = {"ServerAliveInterval":"",
"Compression":"yes",
"CompressionLevel":""
}
#配置第一个其他组
config["bitbucket.org"] = {}
#直接赋值
config["bitbucket.org"]["User"] = 'hg' #配置第二个其他组
config["topsecret.server.com"] = {}
#这边就赋给一个变量
topsecret = config["topsecret.server.com"]
#通过变量赋值
topsecret["Host Port"] = ''
topsecret["ForwardX11"] = 'no'
#给全局配置组赋值
config["DEFALUT"]["ForwardX11"] = "yes"
#操作完毕,把配置的内容写入一个配置文件中
with open("example.ini","w") as configfile:
config.write(configfile)
2、读取配置文件
1)、读取配置组
>>> import configparser
>>> config = configparser.ConfigParser()
>>> config.sections() #不读取配置文件,组名列表为空
[]
>>> config.read("example.ini") #读取配置文件,返回配置文件名
['example.ini']
>>> config.sections() #返回除默认配置组的其他组名
['bitbucket.org', 'topsecret.server.com']
>>> config.defaults() #读取默认配置组,并返回有序字典
OrderedDict([('compressionlevel', ''), ('serveraliveinterval', ''), ('compression', 'yes'), ('forwardx11', 'yes')])
2)、组名是否存在
>>> 'bitbucket.org' in config #组名存在
True
>>> 'zhangqigao.org' in config #组名不存在
False
3)、读取组内的值
>>> config["bitbucket.org"]["User"] #读取"bitbucket.org"配置组中的值
'hg'
>>> config["DEFAULT"]["Compression"] #读取默认配置组中的值
'yes'
>>> topsecret = config['topsecret.server.com'] #把配置组赋给一个对象
>>> topsecret['ForwardX11'] #通过对象获取值
4)、 循环获取组内的key值
>>> for key in config["bitbucket.org"]: #循环打印bitbucket.org组下的key值
... print(key)
...
#输出,只打印默认组和bitbucket.org组的key值
user
compressionlevel
serveraliveinterval
compression
forwardx11
>>> for key in config["topsecret.server.com"]:#循环打印topsecret.server.com组下的key值
... print(key)
...
#输出,只打印默认组和topsecret.server.com组的key值
host port
forwardx11
compressionlevel
serveraliveinterval
compression
重点:
四、configparser增删改查语法
1、配置文件名i.cfg
1
2
3
4
5
6
7
8
9
10
|
[DEFAULT] k1 = v1
k2 = v2
[section1] k3 = v3
k4:v4 [section2] k5 = 5
|
2、读i.cfg
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
|
import configparser
config = configparser.ConfigParser()
config.read( "i.cfg" )
sec = config.sections()
print (sec)
#输出 [ 'section1' , 'section2' ]
options = config.options( "section2" ) #返回默认组和section2组的key值
print (options)
#输出 [ 'k5' , 'k1' , 'k2' ]
item_list = config.items( "section2" ) #返回默认组和section2组的key-value值
print (item_list)
#输出 [( 'k1' , 'v1' ), ( 'k2' , 'v2' ), ( 'k5' , '5' )]
val1 = config.get( "section2" , "k1" ) #获取section2组中k1对应的值,是否可取是按照上面返回的列表
print (val1)
#输出 v1 val2 = config.getint( "section2" , "k5" ) #返回section2中k5的值,这个值返回的int类型的
print (val2)
#输出 5 |
3、改写i.cfg
①删除section和option
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
import configparser
config = configparser.ConfigParser()
config.read( "i.cfg" )
config.remove_option( "section1" , "k3" ) #删除section1组下的k3
config.remove_section( "section2" ) #删除section2组
with open ( "i.cfg2" , "w" ) as f: #重新写入一个文件
config.write(f)
#输出,写入文件的内容 [DEFAULT] k1 = v1
k2 = v2
[section1] k4 = v4
|
②添加section
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
import configparser
config = configparser.ConfigParser()
config.read( "i.cfg" )
sec = config.has_option( "section2" , "k5" ) #是否存在section2组内有k5
print (sec)
#输出 True sec = config.has_section( "duoduo" ) #是否存在duoduo组
print (sec)
#输出 False config.add_section( "duoduo" ) #添加section组duoduo
config.add_section( "duoduo" ) #重新写入到一个配置文件中
with open ( "i.cfg3" , "w" ) as f:
config.write(f)
|
③添加或者设置option
1
2
3
4
5
6
7
8
9
|
import configparser
config = configparser.ConfigParser()
config.read( "i.cfg" )
config. set ( "duoduo" , "z" , "18" ) #设置或者添加duoduo中option值
with open ( "i.cfg3" , "w" ) as f: #重新写入文件中
config.write(f)
|