Python:configparser(配置文件解析器)

2020-11-06  本文已影响0人  _简姑娘_

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"

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() 方法。

上一篇下一篇

猜你喜欢

热点阅读