module-configparser

python3-configparser模块
configparser用于配置文件解析,可以解析特定格式的配置文件,此类文件格式为:xxx.ini。在python3中,该模块名为configparser,在python2中使用的模块名为ConfigParser,configparser是解析器,那么解析对象ini文件具有什么格式呢:
ini文件结构特点:

  • 键值对可用=或者:进行分隔
  • section(节点)的名字是区分大小写的,而key的名字是不区分大小写的
  • 键值对头部和尾部的空白符会被去掉
  • 值可以为多行
  • 配置文件可以包含注释,注释以#或者;为前缀

注意:configparser有default_section的概念,默认为[DEFAULT]节,也就是之后所有的section都有该默认section中的键值对

下面我们用程序来创建一个ini文件:

>>> import configparser
>>> config = configparser.ConfigParser()   # 创建对象
>>> config['DEFAULT'] = {
...                 'ServerAliveInterval' : '60',
...                 'Compression' : 'yes',
...                 'CompressionLevel' : '6'}
>>> config['bitbucket.org'] = {}
>>> config['bitbucket.org']['User'] = 'hg'
>>> config['topsecret.server.com'] = {}
>>> topsecret['Port'] = '1080'
>>> topsecret['ForwardX11'] = 'no'
>>> config['DEFAULT']['ForwardX11'] = 'yes'
>>> with open('example.ini','w',encoding='utf-8') as configfile:
...    config.write(configfile)
>>>

运行之后生成一个example.ini的配置文件内容如下:

[DEFAULT]
ServerAliveInterval = 60
Compression = yes
CompressionLevel = 6
ForwardX11 = yes
[bitbucket.org]
User = hg
[topsecret.server.com]
Port = 1080
ForwardX11 = no

我们对example.ini配置文件进行读取:

>>> import configparser
>>> config = configparser.ConfigParser()
>>> config.sections()
[]
>>> config.read('example.ini')
['example.ini']
>>> config.sections()
['bitbucket.org', 'topsecret.server.com']
>>> 'bitbucket.org' in config
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']
'1080'
>>> for key in config['bitbucket.org']: print(key)
...
user
compressionlevel
serveraliveinterval
compression
forwardx11
>>> config['bitbucket.org']['ForwardX11']
'yes'

获取key值的方法除了列表之外,还可以通过section级别的get()方法获取,同时该函数可以指定默认值

>>> config['bitbucket.org'].get('User')
'hg'
>>> config['topsecret.server.com'].get('ForwardX11')
'no'

topsecret.get(‘CompressionLevel’)
‘6’
topsecret.get(‘Aipher’,’4des’)
‘4des’

而解析器级别的`get()`函数的默认值是通过`fallback`参数指定的:
``` bash
>>> config.get('bitbucket.org', 'monster',fallback='No such things as monster')

** 注意 ** 无论是通过列表方式获取值,还是通过get()方法获取值,获取到的数据都是字符串类型的,如果想要获取指定类型的值,可以使用下面方法:

  • getint()
  • getfloat()
  • getboolean()
    同时注意getboolean()方法能判断True/False的值有:’yes’/‘no’,’on’/‘off’,’true’/‘false’ 和 ‘1’/‘0’

config.ini文件实例:

[section1]
name = cntsp
age = 18

[section2]
school : python-school
date : 2017-01-01
###文件格式说明###
[xxx] 代表节点
xx = xx 或者 xxx : xxx 代表键值对
>>> import configparser
>>> config = configparser.ConfigParser()  # 常见对象
>>> config.read('config.ini',encoding='utf-8') # 读取配置文件,如果配置文件不存在,则创建
>>> secs = config.sections() # 获取所有节点名称
>>> print(secs)
['section1','section2']
>>> options = config.options('section1')  # 获取指定节点的所有key
['name','age']
>>> item_list = config.items('section1')  # 获取指定节点的键值对
>>> print(item_list)
[('name','cntsp'),('age','18')]
>>> val = config.getint('section1','age') # 获取指定节点指定key的value,由于age属性,所有我们选择了getint()方法。
18
>>> va2 = config.has_section('section1')  # 检查指定节点是否存在,返回True或False
>>> print(va2)
True
>>> va3 = config.has_option('section1','age')  # 检查指定节点中是否存在某个key,返回True或False
>>> print(va3)
True
>>> ###增删改
>>> config.add_section('node')  # 添加一个新节点node,此时节点尚未写入文件
>>> config.write(open('config.ini','w',encoding='utf-8')) # 将添加的节点node写入配置文件
>>> config.remove_section('node') # 删除node节点,此时删除了内存中的节点node
>>> config.write(open('config.ini','w',encoding='utf-8')) # 将删除节点node后的文件内容回写到配置文件
>>> config.set('section1','key1','val1') # 在已经存在的节点中添加一个键值对key1 = val1,如果节点不存在则报错,如果key已经存在,则修改value值
>>> config.write(open('config.ini','w',encoding='utf-8'))

本文参考于
https://xin053.github.io/2016/07/18/configparser%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6%E8%A7%A3%E6%9E%90%E5%99%A8%E4%BD%BF%E7%94%A8%E8%AF%A6%E8%A7%A3/
http://www.cnblogs.com/wang-yc/p/5620944.html


文章作者: 阿培
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 阿培 !
 上一篇
module-hashlib module-hashlib
hashlib模块:用于加密相关的操作,代替了md5模块和sha模块,主要提供了SHA1,SHA224,SHA256,SHA383,SHA512,MD5算法,在python3中已经废弃了md5和sha模块1.哈希简介 使用标准库中的 has
2017-10-30
下一篇 
module-random-os-sys module-random-os-sys
random()方法返回随机生成的一个实数,它在[0,1]范围内 import random random.random() print(random.randint(1,2)) print(random.randrange(1,10))
2017-10-29
  目录