首页 > 编程语言 >Python的configparser模块中,ConfigParser和RawConfigParser的区别

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

时间:2024-09-19 15:48:39浏览次数:3  
标签:配置文件 get Python RawConfigParser print configparser ConfigParser

在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)

标签:配置文件,get,Python,RawConfigParser,print,configparser,ConfigParser
From: https://blog.csdn.net/qq_42771102/article/details/142359574

相关文章

  • 京东云轻量云主机搭建部署Python环境教程
    一、Python环境介绍Python是一种面向对象的解释型语言,可应用于各种领域,包括但不限于网站、游戏开发、机器人,人工智能,大数据等。CentOS系统本身默认安装有python2.x,版本x根据不同系统版本有所不同,可通过python--V或python--version查看系统自带的python版本。本文以轻量云......
  • 多平台MD5加密与验证的实践:Java、Python、Windows、Linux
    前言在上一篇文章中,我们详细介绍了MD5算法的原理及其应用场景。为了帮助开发者更好地掌握MD5的实际使用方法,本文将通过Java、Python、Windows命令行、以及Linux命令行等多种方式,讲解如何在不同平台上生成和验证MD5摘要。通过这些实例,你可以更灵活地运用MD5来处理数据完整......
  • vscode 远程 切换python 虚拟环境
    在VisualStudioCode(VSCode)中切换远程服务器上的Python虚拟环境,你可以使用PythonExtensionforVisualStudioCode。以下是步骤和示例代码:确保你已经安装了Python扩展。配置ssh以便能够远程连接到服务器。在VSCode中打开远程服务器上的文件夹。在VSCode的命令面板(Ctrl+Shif......
  • 【Python报错已解决】AttributeError: ‘WindowsPath‘ object has no attribute ‘rs
    ......
  • 【Python报错已解决】 TypeError: Descriptors cannot not be created directly
    ......
  • 如何用Python将HTTP接口封装成可视化页面。
        在软件行业中,经常会遇到有一些功能只能通过接口触发,没有页面。这样很不方便,。我们这里,就是通过PyQt5实现,将接口的入参,封装成一个可视化的表单。将用户在表单中填写的数据,传给接口,接口再带参请求业务 1.先看最终的效果,用户打开桌面应用后,只会出现下面的弹窗, 接口......
  • [1065] Reverse geocoding in python
    ToimplementreversegeocodinginPython,youcanusethegeopylibrary,whichprovidesaconvenientinterfaceforvariousgeocodingservices.Here’sastep-by-stepguidetohelpyougetstarted:Step-by-StepGuideInstallthegeopylibrary:pipinstall......
  • 只会Python编程,做量化交易策略用QMT怎么样?听说QMT是支持Python的!
    QMT是专门为机构、活跃投资者、高净值客户等专业投资者研发的智能量化交易终端,拥有高速行情、极速交易、策略交易、多维度风控等专业功能,满足专业投资者的特殊交易需求。覆盖业务范围广:沪深A股、港股通、两融、期权、期货。适合用QMT的投资者:机构投资者:对系统交易工具和交......
  • Python量化分析2024年最新整理的免费获取股票数据接口集合以及API数据接口说明文档
    ​近一两年来,股票量化分析逐渐受到广泛关注。而作为这一领域的初学者,首先需要面对的挑战就是如何获取全面且准确的股票数据。因为无论是实时交易数据、历史交易记录、财务数据还是基本面信息,这些数据都是我们进行量化分析时不可或缺的宝贵资源。我们的核心任务是从这些数据......
  • Python中使用Redis布隆过滤器
    Python中使用Redis布隆过滤器在Python中使用Redis布隆过滤器,可以利用redis-py库和redis-py-bloom扩展。布隆过滤器是一种空间效率高的概率性数据结构,适合用于判断某个元素是否在集合中。以下是如何在Python中设置和使用Redis布隆过滤器的步骤:安装依赖首先,确保你已经......