python configparser模块常用方法以及常见报错处理

news2024/9/22 1:45:41

configparser 是 Python 中一个用于处理配置文件的标准库,可以帮助你生成、读取和修改配置文件的内容

1. 生成配置文件

import configparser

# 创建一个配置文件对象
config = configparser.ConfigParser()

# 添加配置项和值
config['Section1'] = {'key1': 'value1', 'key2': 'value2'}
config['Section2'] = {'key3': 'value3'}

# 将配置写入到文件中
with open('config.ini', 'w') as configfile:
    config.write(configfile)

代码将在当前路径下生成一个名为 config.ini 的配置文件,并将配置项和值写入其中,生成的配置文件内容如图:
在这里插入图片描述

2. 读取配置文件

import configparser

# 创建一个配置文件对象
config = configparser.ConfigParser()

# 从文件中读取配置
config.read('config.ini')

# 获取配置项的值
value1 = config.get('Section1', 'key1')
value2 = config.get('Section1', 'key2')
value3 = config.get('Section2', 'key3')

print(value1)  # 输出:value1
print(value2)  # 输出:value2
print(value3)  # 输出:value3

通过调用 config.read('config.ini')方法读取配置文件,并使用 config.get(section, option)方法获取指定配置项的值。

3. 修改和删除配置文件内容

import configparser

# 创建一个配置文件对象
config = configparser.ConfigParser()

# 从文件中读取配置
config.read('config.ini')

# 修改配置项的值
config.set('Section1', 'key1', 'new_value')

# 删除配置项
config.remove_option('Section2', 'key3')

# 将修改后的配置写回到文件中
with open('config.ini', 'w') as configfile:
    config.write(configfile)

通过调用config.set(section, option, value) 方法修改配置项的值,调用 config.remove_option(section, option) 方法删除配置项,并将修改后的配置重新写入到文件中。更新的配置文件如图:
在这里插入图片描述

4. 常见报错问题处理

; test.ini文件内容
[other]
A=%abcde%fg
# coding=utf-8
from configparser import ConfigParser


conf = ConfigParser()
conf.read('config.ini')

# 获取指定section的key的值
print(conf.get('other', 'A'))

4.1 报错UnicodeDecodeError: ‘gbk’ codec can’t decode byte 0xae in position

在这里插入图片描述
该报错是因为代码中包含中文字符,读取配置文件的时候需要进行编码encoding,将conf.read('config.ini')修改为conf.read('config.ini', encoding='utf-8')

4.2 报错:configparser.InterpolationSyntaxError: ‘%’ must be followed by ‘%’ or ‘(’

在这里插入图片描述
该报错是因为value值包含了特殊字符%引起,解决办法有两种:

  • 取消%号的占位符功能,将%修改为%%
    修改后的配置文件如下:
; test.ini文件内容
[other]
A=%%abcde%%fg
  • ConfigParser替换为RawConfigParser
    修改后的代码如下:
# coding=utf-8
from configparser import RawConfigParser

conf = RawConfigParser()
conf.read('config.ini', encoding='utf-8')

# 获取指定section的key的值
print(conf.get('other', 'A'))

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/729235.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

java 科学计算库 Smile

官网 https://haifengl.github.io/ github https://haifengl.github.io/ 简介 统计机器智能和学习引擎,或者简称 Smile,是一个有前途的现代机器学习系统,在某些方面类似于 Python 的 scikit-learn。它是用 Java 开发的,也提供…

私域账号防范手册

微信为什么要养号吗?为什么会被封?是什么原理,怎么解封,这些你的了解吗? 来看看这篇文章,这些都能给你解答。

向日葵远程命令执行漏洞(CNVD-2022-10270) 漏洞复现

为方便您的阅读,可点击下方蓝色字体,进行跳转↓↓↓ 01 漏洞描述02 影响范围03 利用方式05 实战案例06 修复方案 01 漏洞描述 向日葵远程控制是一款面向企业和专业人员的远程pc管理和控制的服务软件。可以在任何有网络的情况下,轻松访问并控制…

Linux命令之nc命令

一、命令简介 nc是netcat的简写,是一个功能强大的网络工具,有着网络界的瑞士军刀美誉。nc命令在linux系统中实际命令是ncat,nc是软连接到ncat。nc命令的主要作用如下: 实现任意TCP/UDP端口的侦听,nc可以作为server以T…

vue3中的包装响应式数据ref、reactive、toRef、toRefs

一、ref Vue 3中拥有一个新的特性叫做ref,它是一个函数,用于包装响应式数据。与Vue 2的data选项不同,ref可以在普通JavaScript中使用,而不仅仅是在Vue组件中。ref可以将普通的JavaScript数据变成响应式的,这意味着当被…

Python接口自动化测试post请求和get请求,获取请求返回值

引言 我们在做python接口自动化测试时,接口的请求方法有get,post等;get和post请求传参,和获取接口响应数据的方法; 请求接口为Post时,传参方法 我们在使用python中requests库做接口测试时,在做post接口测试…

Go语言-数组和切片有什么异同?

slice 的底层数据是数组,slice 是对数组的封装,它描述一个数组的片段。两者都可以通过下标来访问单个元素。 数组是定长的,长度定义好之后,不能再更改。在 Go 中,数组是不常见的,因为其长度是类型的一部分…

2023年第一届证券基金行业先进计算峰会在沪成功召开

2023年7月7日,在中国计算机学会集成电路设计专委会、中国通信学会金融科技发展促进中心、中国电子工业标准化技术协会新一代计算标准工作委员会和证券基金信息技术创新联盟WG1工作组的指导下,由中科驭数主办的2023年第一届证券基金行业先进计算峰会在上海…

以太网电子产品高低温循环测试

参考标准:《GB/T 2423.22-2012 环境试验 第2部分:试验方法 试验N:温度变化》:试验用来确定元器件、设备或其他产品耐受环境温度快速变化的能力。 1、测试影响因素 温度变化试验用来确定一次或连续多次的温度变化对试验样品的影响…

linux报错 /bin/bash^M:解释器错误:没有那个文件或目录

在Linux中运行脚本时,会出现linux报错 /bin/bash^M:解释器错误:没有那个文件或目录。这是因为我们将在Windows下编写的脚本拷贝到Linux环境中运行时会出现运行不了的情况。主要还是Windows的换行符为\r\n,而Linux环境中的换行符号为\n。 解决方法有:  …

Java安全——基于密码的加密

Java安全 基于密码的加密 基于密码加密和SSL加密的区别 密码加密可以数据和密码分离传输SSL只限于在套接字空间传输的数据进行加密 SSL和密码加密 密码加密是指通过算法将原始信息转换成密文,只有知道相应密钥的人才能解密。Java中常用的密码加密算法包括MD5、SHA、…

Buffer Overflow缓冲区溢出和保护措施

缓冲区溢出是指当数据写入某个缓冲区(buffer)时,超出了为该缓冲区分配的内存空间,从而导致覆盖了相邻内存区域的情况。这种现象可能导致程序崩溃、数据损坏,甚至引发安全漏洞,允许攻击者利用这一漏洞执行恶…

Python程序开发——第十一章 图形用户页面编程

目录 一、图形用户界面与tkinter二、tkinter的根窗口(一)根窗口的创建(二)根窗口的基本方法 三、几何布局管理器(一)pack布局(二)grid布局(三)place布局 四、…

【Android】将手机屏幕投屏到电脑上控制的解决方案

有没有听说scrcpy呢,是投屏工具,通过它就可以实现把手机屏幕投屏到电脑上了,有此帮助,离实现目标更近了一步。 首先,去开源站点GitHub那里下载获取scrcpy 压缩包,根据自己的电脑系统选择下载即可&#xff…

NginxTomcat架构的动静分离和负载均衡

目录 一、Tomcat的多实例部署 1.创建 kgc 和 benet 项目目录和文件 2.修改 Tomcat 主配置文件 3.客户端浏览器访问验证 二、NginxTomcat负载均衡架构原理 2.1 Nginx负载均衡的主要配置 2.2 NginxTomcat负载均衡的优点 三、NginxTomcat负载均衡实验 1.部署Nginx 负载…

SNP受邀参加“赛意力量·全国行”相聚合肥,RISE with SAP

伴随着全球数字化程度的不断加深,IT和OT逐步走向原生融合,以价值链重构倒逼产业转型的结构升级趋势已日益明显。在旺盛的市场需求与机遇下,企业的IT投入涌现出爆发式增长态势,对于IT系统“高效支撑以保障业务先赢”的能力要求已不…

Linux——权限

1.Linux权限的概念 Linux权限是指用于限制对文件和目录的访问的安全机制。文件和目录的权限由三个部分组成:所有者权限、同组用户权限和其他用户权限。每个部分又包括读、写、执行三种权限。这些权限决定了用户能否对文件或目录进行读、写、执行等操作。 2.Linux…

MinGW编译OpenCV 过程记录

1.下载源码opencv-3.4.10.zip ,可以在OpenCV官网下载Releases - OpenCV 解压缩如下: 2.下载Mingw64工具,需要支持posix 并设置系统环境目录,下载的文件名x86_64-8.1.0-release-posix-sjlj-rt_v6-rev0.7z (可以在网上找) 3.使用Cmake工具构建…

Linux学习之分区和挂载磁盘配额

先分区然后格式化。 fdisk /dev/sdb开始分区。 输入p,然后按下Enter,可以查看当前设备的分区情况。 输入d,然后按下Enter,就可以删除上边的分区,要是有多个分区,会让你选择删除哪个分区。 输入n&…

MySQL注入-SQLi-Less3笔记

起手?id1给个参数看看反应 产生报错,关注后面的内容 //从报错信息中的1)就可以推断出SQL语句应该是WHERE XX(id)//那就需要考虑如何将 单引号和括号,提前关闭并且执行我们想要的语句就可以了 知道了语句,直接拼接 ?id1) and 12 union sel…