使用ConfigParse 解析配置文件
电脑主机中有许多.ini 或conf的配置文件,形如
[control_gui]
serverIP=127.0.0.1
serverPort=9920
[control]
maxtrytime=5
averageLevel=12.3
isEnableSend=False
configParse模块有一个ConfigParser类,首先创建ConfigParser类,ConfigParser类有个allow_no_value 参数,默认值为False, 当为True时,允许选项没有值,即serverIP 没有值。
ConfigParser 中有很多的方法,其中与读取配置文件,判断配置项相关的方法有:
- sections : 返回一个包含所有章节的列表;
- has_section :判断章节是否存在;
- items :以元组的形式返回所有选项;
- options :返回一个包含章节下所有选项的列表;
- has_option :判断某个选项是否存在;
- get、getboolean、getinit、getfloat :获取选项的值
ConfigParser 也提供了许多方法便于我们修改配置文件:
- remove_section :删除一个章节;
- add_section :添加一个章节;
- remote_option :删除一个选项;
- set :添加一个选项;
- write 将 ConfigParser 对象中的数据保存到文件中.
import configparser
cfp = configparser.ConfigParser(allow_no_value=True)
cfp.read('myconf.ini')
for section in cfp.sections():
print('section:', section)
for option in cfp.options(section):
print(option)
print('\n')
serverIp = cfp.get('control_gui', 'serverIP')
serverPort = cfp.getint('control_gui', 'serverPort')
averageLevel = cfp.getfloat('control', 'averageLevel')
isEnableSend = cfp.getboolean('control', 'isEnableSend')
print('serverIp:', serverIp)
print('serverPort:', serverPort)
print('averageLevel:', averageLevel)
print('isEnableSend:', isEnableSend)
cfp.set('control_gui', 'serverPort', str(9998))
cfp.set('control_gui', 'serverIP', '192.168.2.5')
cfp.write(open('myconf.ini','w'))
输出
section: control_gui
serverip
serverport
section: control
maxtrytime
averagelevel
isenablesend
serverIp: 192.168.2.5
serverPort: 9998
averageLevel: 12.3
isEnableSend: False