python中对配置文件的读写操作

2,210 阅读2分钟

python内置的configparser模块能非常方便的对配置文件进行操作,常见的配置文件有*.ini和*.conf。配置文件常见的内容形式如图所示(还有冒号表示的),主要组成部分也在图中:

需要注意的是value被读出来后都是字符串类型的,虽然在文件里面看上去是整型


一、读取配置文件

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')
同样要再一次做写入文件操作才能生效。