1. 介绍
此模块实现一种基本配置语言 ConfigParser
类,这种语言所提供的结构与 Microsoft Windows INI 文件的类似,并不能够解析或写入在 Windows Registry 扩展版本 INI 语法中所使用的值-类型前缀。
2. 配置文件形式
总的来说,这种文件由多个节组成,每个节包含多个带有值的键。configparser
类可以读取和写入这种文件。
[DEFAULT]
ServerAliveInterval = 45
Compression = yes
CompressionLevel = 9
ForwardX11 = yes
[bitbucket.org]
User = hg
[topsecret.server.com]
Port = 50022
ForwardX11 = no
3. 写入
import configparser
cf = configparser.ConfigParser()
cf["DEFAULT"] = {"ServerAliveInterval":"45","Compression":"yes"}
cf["bitbucket.org"]["User"] = "hg"
with open("d:\\config.ini") as f:
cf.write(f)
4. 读取
import configparser
cf = configparser.ConfigParser()
print(cf.sessions()) # 结果是[]
cf.read("d:\\config.ini")
print(cf.sessions()) # 结果是['bitbucket.org', 'topsecret.server.com']
# 注意:没有DEFAULT
for key in cf["bitbucket.org"]:
print(key) # 注意:DEFAULT的key也会显示出来
cf["bitbucket.org"]["Compression"] = "yes"
- 注意:
DEFAULT
小节为所有其他小节提供了默认值 ,小节中的键大小写不敏感并且会存储为小写形式
5. 更新
cf = configparser.ConfigParser()
cf.read("d:\\config.ini")
cf.add_section("yuan")
cf.remove_section("bitbucket.org")
cf.remove_option("topsecret.server.com","forwardx11")
cf.set("yuan","k2","22222")
with open("d:\\config.ini","w") as f:
cf.write(f)
6. 支持的数据类型
配置解析器不会猜测配置文件中值的类型,而是将它们存储为字符串。 这意味着如果需要其他数据类型,应当自行来转换:
>>> int(topsecret['Port'])
50022
>>> float(topsecret['CompressionLevel'])
9.0
由于经常需要这样操作,配置解析器提供了一系列获取方法来处理整数、浮点数和布尔值的方法。 最后一个类型的处理最为有趣,因为简单地将值传给 bool()
是没有用的,bool('False')
仍然会是 True
。 为解决这个问题配置解析器提供了 getboolean()
。 这个方法对大小写不敏感并可识别 'yes'
/'no'
, 'on'
/'off'
, 'true'
/'false'
和 '1'
/'0'
等布尔值。 例如:
>>> topsecret.getboolean('ForwardX11')
False
>>> config['bitbucket.org'].getboolean('ForwardX11')
True
>>> config.getboolean('bitbucket.org', 'Compression')
True
除了 getboolean()
,配置解析器还提供了同类的 getint()
和 getfloat()
方法。