configparser模块

此模块用于生成和修改常见配置文档,当前模块的名称在 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'] )

 

 

 

上一篇:学习mongo系列(六)limit(munber),skip(number)


下一篇:Windows API 读写.ini文件