第十四章:应用构建模块-configparser:处理配置文件-访问配置设置-值类型

14.7.3.2 值类型
所有节和选项名都被处理为字符串,不过选项值可以是字符串、整数、浮点数或者布尔值。可以用多个不同的字符串值表示配置文件中的布尔值;访问时它们会被转换为True或False。下面的文件中包含了一些数值类型的例子,另外还包含所有被解析器识别为布尔值的值。
在这里插入图片描述

ConfigParser不会尝试去了解选项类型。而会希望应用使用正确的方法来获取所需类型的值。get()总会返回一个字符串。使用getint()可以得到整数,getfloat()得到浮点数,使用getboolean()得到布尔值。

from configparser import ConfigParser

parser = ConfigParser()
parser.read('types.ini')

print('Integers:')
for name in parser.options('ints'):
    string_value = parser.get('ints',name)
    value = parser.getint('ints',name)
    print('  {:<12} : {!r:<7} -> {}'.format(
        name,string_value,value))

print('\nFloats:')
for name in parser.options('floats'):
    string_value = parser.get('floats',name)
    value = parser.getfloat('floats',name)
    print('  {:<12} : {!r:<7} -> {:0.2f}'.format(
        name,string_value,value))

print('\nBooleans:')
for name in parser.options('booleans'):
    string_value = parser.get('booleans',name)
    value = parser.getboolean('booleans',name)
    print('  {:<12} : {!r:<7} -> {}'.format(
        name,string_value,value))

使用示例输入运行这个程序,可以生成以下结果:
在这里插入图片描述
可以在ConfigParser的converters参数中传入转换函数来增加定制类型转换器。每个转换器接收一个输入值,然后将它转换为适当的返回类型。

from configparser import ConfigParser
import datetime

def parse_iso_datetime(s):
    print('parse_iso_datetime({!r})'.format(s))
    return datetime.datetime.strptime(s,'%Y-%m-%dT%H:%M:%S.%f')


parser = ConfigParser(
    converters={
        'datetime':parse_iso_datetime,
        }
    )
parser.read('custom_types.ini')

string_value = parser['datetimes']['due_date']
value = parser.getdatetime('datetimes','due_date')
print('due_date : {!r} -> {!r}'.format(string_value,value))

增加转换器会让ConfigParser自动为这个类型创建一个获取方法,并使用converters中指定的类型名。在这个例子中,'datetime’转换器会让ConfigParser增加一个新的getdatetime()方法。

还可以向ConfigParser的子类直接增加转换器的方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值