python内置的configparser模块能非常方便的对配置文件进行操作,常见的配置文件有*.ini和*.conf。配置文件常见的内容形式如图所示(还有冒号表示的),主要组成部分也在图中:
一、读取配置文件
import configparser
config = configparser.ConfigParser()
1. 获取所有的section,返回一个列表
config.sections()
>>> ['bitbucket.org', 'topsecret.server.com']
这里为什么没有DEFAULT?我的理解是DEFAULT是个特殊的section,它属于其他所有的section,或者说其他的section都继承DEFAULT。注意DEFAULT一定都是大写字母,不然这种效果就没了。
2.获取指定section下的所有option,返回一个列表
config.options('topsecret.server.com')
>>> ['port', 'forwardx11', 'serveraliveinterval', 'compression', 'compressionlevel']
这里除了topsecret.server.com原本有的两个option,还有DEFAUTL里面的所有option,相当于继承了DEFAULT里面的所有option,且自己的value会覆盖DEFAULT的value,详见第3点。
3.获取指定section中option的value,返回一个字符串
conf['topsecret.server.com']['ForwardX11']
>>> no
或者用get:conf.get('topsecret.server.com', 'ForwardX11')
这里cForwardX11就把DEFAULT里面的cForwardX11值覆盖了,变成了no
4.获取指定section的item,返回是一个列表,元素是二元元组
conf.items('bitbucket.org')
>>> [('serveraliveinterval', '45'), ('compression', 'yes'), ('compressionlevel', '9'), ('forwardx11', 'yes'), ('user', 'hg')]
bitbucket.org也继承了DEFAULT
二、写配置文件
import configparser
config = configparser.ConfigParser()
1. 直接将一个dict赋值给section
config['db'] = {
'host': '192.168.1.2',
'port': '123'
}
2. 或者创建先创建一个空section,在加item
config['platofrm'] = {}
config['platform']['name'] = 'cc'
用这种方法的话一定得先创建section,直接执行第二行代码是不行的。
3. 最后要把配置写到文件里面
with open('example.ini', 'w') as configfile:
config.write(configfile)
4. 对已有的配置进行更改
config.set('platform', 'name', 'bb')
同样要再一次做写入文件操作才能生效。