此模块用于生成和修改常见配置文档,当前模块的名称在 python 3.x 版本中变更为 configparser。
来看一个好多软件的常见配置文件格式如下
[DEFAULT] 是每个section共有的
1 [DEFAULT] 2 serveraliveinterval = 45 3 compression = yes 4 compressionlevel = 9 5 forwardx11 = yes 6 7 [bitbucket.org] 8 user = hg 9 maxusers = 110 10 11 [topsecret.server.com] 12 port = 50022 13 forwardx11 = no 14 15 [group1] 16 name = lemi 17 age = 21 18 19 [group2] 20 name = kevin
解析配置文件
>>> import configparser # 导入模块 >>> config = configparser.ConfigParser() #实例化(生成对象) >>> config.sections() #调用sections方法 [] >>> config.read('example.ini') # 读配置文件(注意文件路径) ['example.ini'] >>> config.sections() #调用sections方法(默认不会读取default) ['bitbucket.org', 'topsecret.server.com'] >>> 'bitbucket.org' in config #判断元素是否在sections列表内 True >>> 'bytebong.com' in config False >>> config['bitbucket.org']['User'] # 通过字典的形式取值 'hg' >>> config['DEFAULT']['Compression'] 'yes' >>> topsecret = config['topsecret.server.com'] >>> topsecret['ForwardX11'] 'no' >>> topsecret['Port'] '50022' >>> for key in config['bitbucket.org']: print(key) # for循环 bitbucket.org 字典的key ... user compressionlevel serveraliveinterval compression forwardx11
增删改查语法
import configparser
conf = configparser.ConfigParser()
conf.read("conf.ini",encoding='utf-8')
for k,v in conf['bitbucket.org'].items():
print(k,v)
>>>
user hg
maxusers 110
serveraliveinterval 45
compression yes
compressionlevel 9
forwardx11 yes
print(conf.options('bitbucket.org'))
>>>['user', 'maxusers', 'serveraliveinterval', 'compression', 'compressionlevel', 'forwardx11']
print(conf['group1']['age'])
>>>21
print(dir(conf))
>>>'add_section', 'clear', 'converters', 'default_section', 'defaults', 'get', 'getboolean', 'getfloat', 'getint', 'has_option', 'has_section', 'items', 'keys', 'options',
'optionxform', 'pop', 'popitem', 'read', 'read_dict', 'read_file', 'read_string', 'readfp', 'remove_option', 'remove_section', 'sections', 'set', 'setdefault', 'update', 'values', 'write']
# 添加模块,并赋值
conf.add_section('group2')
conf['group2']['name'] = 'kevin'
conf['group2']['age'] = '22'
conf.write(open('conf.ini','w'))
conf.add_section('group3')
#赋值,修改
conf.set('group3','name','fadewalk')
conf.write(open('conf.ini','w'))
#删除section模块
conf.remove_section('group3')
conf.write(open('conf.ini','w'))
#删除选项
conf.remove_option('group2','age')
conf.write(open('conf.ini','w'))
练习题
通过configparser模块完成以下功能 文件名my.cnf [DEFAULT] [client] port = 3306 socket = /data/mysql_3306/mysql.sock [mysqld] explicit_defaults_for_timestamp = true port = 3306 socket = /data/mysql_3306/mysql.sock back_log = 80 basedir = /usr/local/mysql tmpdir = /tmp datadir = /data/mysql_3306 default-time-zone = '+8:00'
修改时区 default-time-zone = '+8:00' 为 校准的全球时间 +00:00 删除 explicit_defaults_for_timestamp = true 为DEFAULT增加一条 character-set-server = utf8
import configparser config = configparser.ConfigParser() config.read('my.conf') config.set('mysqld','default-time-zone','+00:00') config.remove_option('mysqld','explicit_defaults_for_timestamp') config.set('DEFAULT','character-set-server','utf8') config.write(open('my.conf', "w")) print(config['mysqld']['default-time-zone'] )