Python的configparser模块中,ConfigParser和RawConfigParser的区别

在Python的configparser模块中,ConfigParser()和RawConfigParser()是两个不同的类,用于解析配置文件。它们之间的主要区别在于对配置文件中的值进行处理的方式。

一、区别

1、ConfigParser()类是configparser模块的旧版本,它提供了一些额外的特性,如对配置文件中的值进行插值替换。

当使用ConfigParser()类解析配置文件时,它会自动进行值的替换。例如,如果配置文件中的一个值是${section:key},它会自动查找相应的section和key,并将其值替换到${section:key}的位置。

ConfigParser()类还提供了一些方法来获取和设置配置文件中的值,如get()、set()等。

2、RawConfigParser()类是configparser模块的新版本,它不进行任何值的替换或插值操作。

当使用RawConfigParser()类解析配置文件时,它会将配置文件中的值原样返回,不进行任何处理。

RawConfigParser()类也提供了类似的方法来获取和设置配置文件中的值,如get()、set()等。

PS:在Python3中,ConfigParser()类实际上是对RawConfigParser()类的别名,它们是同一个类。这是为了向后兼容性而保留的。因此,在新的代码中,建议使用RawConfigParser()类来解析配置文件,以避免混淆。

SafeConfigParser()是Python2的,不适用于Python3

二、注意事项

注意,如果键值内容包含%,用ConfigParser()会有问题,解决办法:

1、键值内容将%改为%%

2、改用RawConfigParser()。另外,假设键值="abc%def" ,RawConfigParser()读取字符串时,会把双引号也当成字符串组成部分

三、示例

主要用到这3个函数来获取相应的键值:getint()、getfloat()、getboolean(),查询项目不存在时会报错,可以使用fallback参数来设置默认值

下面的2个写法的结果是一样的:

import os
# 获取当前脚本的目录路径
current_directory = os.path.dirname(os.path.abspath(__file__))
# 将工作目录更改为当前脚本所在的目录
os.chdir(current_directory)


import configparser

# 创建一个ConfigParser对象
config = configparser.ConfigParser()
# 读取INI文件
config.read('main.ini', encoding='utf-8')

aa = config.get('app', 'token_string11',fallback=None)
bb = config.get('app', 'pushplus_token')
cc = config.getint('app', 'num')

print(type(aa),aa)
print(type(bb),bb)
print(type(cc),cc)

print('\n')

# 创建一个RawConfigParser对象
configRaw = configparser.RawConfigParser()
configRaw.read('main.ini', encoding='utf')

aa = configRaw.get('app', 'token_string11',fallback=None)
bb = configRaw.get('app', 'pushplus_token')
cc = configRaw.getint('app', 'num')

print(type(aa),aa)
print(type(bb),bb)
print(type(cc),cc)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值