Python 进阶(十八):配置文件(configparser 模块)

在这里插入图片描述

大家好,我是水滴~~

configparser模块是Python标准库中的一个模块,用于解析配置文件。它提供了一种简单而灵活的方式来读取、修改和写入INI格式的配置文件。本文将介绍该模块是如何操作配置文件的。

文章中包含大量的示例代码,希望能够帮助新手同学快速入门。

《Python入门核心技术》专栏总目录・点这里

文章目录

  • 前言
  • 一、INI 文件介绍
  • 二、使用 `configparser` 操作配置文件
    • 2.1 创建配置文件
    • 2.2 读取配置文件
    • 2.3 获取配置项
      • 2.3.1 获取配置项的值
      • 2.3.2 获取特定类型配置项的值
      • 2.3.3 获取节列表
      • 2.3.4 获取指定节的配置项列表
    • 2.4 修改节
      • 2.4.1 判断节是否存在
      • 2.4.2 添加新的节
      • 2.4.3 删除节
    • 2.5 修改配置项
      • 2.5.1 判断配置项是否存在
      • 2.5.2 修改配置项的值
      • 2.5.3 添加新的配置项
      • 2.5.4 删除配置项
    • 2.6 写入配置文件
  • 三、完整代码
  • 总结


前言

配置文件是应用程序中常用的一种方式,它可以存储参数、设置和选项,使得程序在不修改源代码的情况下能够进行配置和调整。Python的configparser模块提供了一种简单而强大的方式来解析配置文件。本教程将详细介绍configparser模块的使用方法,并提供代码示例。

一、INI 文件介绍

INI文件(INI stands for “Initialization”) 是一种常见的配置文件格式,用于存储应用程序的配置信息。它由一系列节(sections)和键值对(key-value pairs)组成。

INI文件的结构如下:

  • 节(Sections):节用方括号括起来,例如 [section_name]。节用于将相关的键值对进行分组。
  • 键值对(Key-Value Pairs):键值对由键和值组成,键和值之间使用等号或冒号进行分隔。例如 key1 = value1 或者 key2: value2

以下是一个示例的INI文件:

[section1]
key1 = value1
key2 = value2

[section2]
key3 = value3
key4 = value4

在这个示例中,有两个节:section1section2,每个节下面有两个键值对。

INI文件常用于存储应用程序的配置信息,例如数据库连接参数、日志设置、界面选项等。它的简单结构使得配置文件易于编写和阅读,并且可以方便地修改和扩展。

二、使用 configparser 操作配置文件

在Python中,可以使用configparser模块来解析和处理INI文件。该模块提供了一种简单而灵活的方式来读取、修改和写入INI文件中的配置项和值。

2.1 创建配置文件

首先,我们需要创建一个配置文件,通常使用INI格式。使用文本编辑器创建一个新的文件,例如config.ini,并按照以下格式编写配置项和对应的值:

[section1]
key1 = value1
key2 = value2

[section2]
key3 = value3
key4 = value4

[section3]
key5 = 10
key6 = 1.2
key7 = true

在这个示例中,我们创建了两个节(section),每个节下面有两个配置项。

2.2 读取配置文件

通过configparser模块,我们可以轻松地读取配置文件的内容。首先,导入configparser模块:

import configparser

然后,创建ConfigParser对象:

config = configparser.ConfigParser()

接下来,使用read()方法读取配置文件:

config.read('config.ini')

你可以指定配置文件的路径和文件名。

2.3 获取配置项

2.3.1 获取配置项的值

一旦配置文件被读取,我们可以使用get()方法获取配置项的值。使用节名和配置项的键作为参数:

v1 = config.get('section1', 'key1')
v2 = config.get('section2', 'key4')

这样,我们就可以获取配置项的值并存储在变量中。

2.3.2 获取特定类型配置项的值

使用get() 方法获取的值类型为字符串,如果想要获取特定类型的值,可以使用下面方法:

v3 = config.getint('section3', 'key5')
v4 = config.getfloat('section3', 'key6')
v5 = config.getboolean('section3', 'key7')

2.3.3 获取节列表

使用 sections()方法可以获取所有节的列表,返回类型为 list

sections = config.sections()

2.3.4 获取指定节的配置项列表

使用 options() 方法可以获取指定节的配置项列表,返回类型为 list

keys = config.options('section3')

2.4 修改节

2.4.1 判断节是否存在

在操作节之前通常要判断是否存在,如果操作不存在的节会,抛出 configparser.NoSectionError 异常。

config.has_section('section1')

该值返回bool,如果存在值为 True,如果不存在值为 False

2.4.2 添加新的节

如果想要添加新的节,可以使用add_section()方法。

config.add_section('section4')
config.add_section('section5')

上面代码会添加两个新的节。

2.4.3 删除节

如果想要删除节,可以使用 remove_section() 方法。

config.remove_section('section4')

2.5 修改配置项

2.5.1 判断配置项是否存在

在操作配置项前通常需要判断是否存在,如果操作不存在的配置,会抛出 configparser.NoOptionError 异常。

v8 = config.has_option('section1', 'key1')
v9 = config.has_option('section1', 'key10')

该值返回bool,如果存在值为 True,如果不存在值为 False

2.5.2 修改配置项的值

如果需要修改配置项的值,可以使用set()方法。同样,需要提供节名和配置项的键,以及新的值:

config.set('section1', 'key1', 'new_value')

这将把配置项的值修改为新的值。

2.5.3 添加新的配置项

如果需要添加新的配置项,可以使用set()方法。同样,需要提供节名和新的键值对:

config.set('section5', 'key5', 'value5')

这将在配置文件中添加一个新的配置项。

2.5.4 删除配置项

如果需要删除配置项,可以使用remove_option()方法。需要提供节名和要删除的配置项的键:

config.remove_option('section2', 'key3')

这将删除配置文件中指定的配置项。

2.6 写入配置文件

在修改配置项之后,可以使用write()方法将更改写入配置文件:

with open('config.ini', 'w') as configfile:
    config.write(configfile)

这将把修改后的配置写回到原始的配置文件中。

三、完整代码

下面是一个完整的示例代码,演示了如何使用configparser模块读取、修改和写入配置文件:

import configparser

# 创建ConfigParser对象
config = configparser.ConfigParser()

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

# 获取配置项的值
v1 = config.get('section1', 'key1')
v2 = config.get('section2', 'key4')
print(v1)
print(v2)
print('---------------------')

# 获取特定类型配置项的值
v3 = config.getint('section3', 'key5')
v4 = config.getfloat('section3', 'key6')
v5 = config.getboolean('section3', 'key7')
print(v3)
print(v4)
print(v5)
print('---------------------')

# 获取节列表
sections = config.sections()
print(sections)
print('---------------------')

# 获取指定节的配置项列表
keys = config.options('section3')
print(keys)
print('---------------------')

# 判断节是否存在
v6 = config.has_section('section1')
v7 = config.has_section('section10')
print(v6)
print(v7)
print('---------------------')

# 添加新的节
config.add_section('section4')
config.add_section('section5')

# 删除节
config.remove_section('section4')

# 判断配置项是否存在
v8 = config.has_option('section1', 'key1')
v9 = config.has_option('section1', 'key10')
print(v8)
print(v9)

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

# 添加新的配置项
config.set('section5', 'key5', 'value5')

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

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

代码执行后,控制台输出内容:

value1
value4
---------------------
10
1.2
True
---------------------
['section1', 'section2', 'section3']
---------------------
['key5', 'key6', 'key7']
---------------------
True
False
---------------------
True
False

config.ini 配置文件内容变成:

[section1]
key1 = new_value
key2 = value2

[section2]
key4 = value4

[section3]
key5 = 10
key6 = 1.2
key7 = true

[section5]
key5 = value5

总结

通过configparser模块,我们可以方便地解析和处理INI格式的配置文件。它提供了读取、获取、修改、添加和删除配置项的方法,使得配置文件的处理变得简单而直观。在实际项目中,配置文件对于管理参数、选项和设置非常有用,可以提高程序的灵活性和可配置性。
通过本教程,你应该已经了解了如何使用configparser模块来解析配置文件,以及如何读取、修改和写入配置项的值。希望这个教程对你理解和使用configparser模块有所帮助!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Google Ad帐号被封?这几个关键点看好

海外广告投放工作中,账号是非常重要的环节。与在Facebook上运行广告相比,运行Google Ads在代理选择方面通常没有那么严格,因为 Google 对 IP 使用并不那么严格。但是,这并不意味着您可以不加考虑地使用任何代理IP。在本文中&#…

vue3-富文本编辑器(vue-quill)

官网&#xff1a;VueQuill | Rich Text Editor Component for Vue 3 安装 pnpm add vueup/vue-quilllatest 使用 局部使用 先导包 import { QuillEditor } from vueup/vue-quill import vueup/vue-quill/dist/vue-quill.snow.css; 再使用 <QuillEditor theme"snow…

Arduino中手写脉冲控制步进电机-2

目录 1、前言 2、时间-位移关系计算 3、Matlab计算时间和位置数据 (1)Matlab程序 &#xff08;2&#xff09;Arduino程序 4、Matlab生成Arduino电机正反转程序语句 &#xff08;1&#xff09;Arduino程序 &#xff08;2&#xff09;Matlab 命令行方式生成Arduino步进电…

21.仿简道云公式函数实战-数学函数-COS

1. COS函数 COS 函数可用于计算角度的余弦值&#xff0c;返回 -1 到 1 之间的数值。 2. 函数用法 COS(弧度) 3. 函数示例 如计算 COS(60) 的值&#xff0c;可设置公式为COS(RADIANS(60))&#xff0c;返回 0.5。 4. 代码实战 首先我们在function包下创建math包&#xff0…

【C++】开源:cpp-httplib HTTP协议库配置与使用

&#x1f60f;★,:.☆(&#xffe3;▽&#xffe3;)/$:.★ &#x1f60f; 这篇文章主要介绍cpp-httplib HTTP协议库配置与使用。 无专精则不能成&#xff0c;无涉猎则不能通。——梁启超 欢迎来到我的博客&#xff0c;一起学习&#xff0c;共同进步。 喜欢的朋友可以关注一下&a…

Python入门学习篇(十一)——函数注释函数嵌套全局变量与局部变量

1 函数注释 1.1 使用说明 第一步 在函数体里面输入三个""" 第二步 回车1.2 示例代码 def quotient(divisor,dividend):""":param divisor: 除数:param dividend: 被除数:return: 商"""return divisor/dividendnum1int(input(&…

10. Opencv检测并截取图中二维码

1. 说明 在二维码扫描功能开发中,使用相机扫描图片时,往往图片中的信息比较多样,可能会造成二维码检测失败的问题。一种提高检测精度的方式就是把二维码在图片中单独抠出来,去除其它冗余信息,然后再去识别这张提取出来的二维码。本篇博客记录采用的一种实现二维码位置检测…

律师卷宗档案保存期限多久?律师档案卷宗如何整理?

律师卷宗档案的保存期限可以根据不同法律和法规进行调整&#xff0c;因此可能会有所不同。一般来说&#xff0c;律师卷宗档案的保存期限通常为10年以上。然而&#xff0c;具体的保存期限还会受到当地司法体系和律师协会规定的影响。建议您咨询所在地的律师协会或相关法律机构&a…

AGV智能搬运机器人-替代人工工位让物流行业降本增效

在当今快速发展的世界中&#xff0c;物流业面临着巨大的挑战&#xff0c;包括提高效率、降低成本和优化工作流程。为了应对这些挑战&#xff0c;一种新型的自动化设备——智能搬运机器人正在崭露头角。本文将通过一个具体的案例来展示富唯智能转运机器人在实际应用中的价值。 案…

【2023】通过docker安装hadoop以及常见报错

&#x1f4bb;目录 1、准备2、安装镜像2.1、创建centos-ssh的镜像2.2、创建hadoop的镜像 3、配置ssh网络3.1、搭建同一网段的网络3.2、配置host实现互相之间可以免密登陆3.3、查看是否成功 4、安装配置Hadoop4.1、添加存储文件夹4.2、添加指定配置4.3、同步数据 5、测试启动5.1…

openGauss学习笔记-175 openGauss 数据库运维-备份与恢复-导入数据-管理并发写入操作示例

文章目录 openGauss学习笔记-175 openGauss 数据库运维-备份与恢复-导入数据-管理并发写入操作示例175.1 相同表的INSERT和DELETE并发175.2 相同表的并发INSERT175.3 相同表的并发UPDATE175.4 数据导入和查询的并发 openGauss学习笔记-175 openGauss 数据库运维-备份与恢复-导入…

【新版Hi3536AV100性能果真强悍】

Hi3536AV100是针对多路高清/超高清&#xff08;1080p/4M/5M/4K&#xff09;智能NVR产品应用开发的新一代专业高端SoC芯片。 Hi3536AV100集成了ARM Cortex-A55八核处理器和性能强大的神经网络处理器&#xff0c;支持多种智能算法应用。 Hi3536AV100支持32路1080p多协议解码及4路…

js中深拷贝与浅拷贝的区别?如何实现一个深拷贝?(收藏好,用时好找)

文章目录 一、数据类型存储二、浅拷贝Object.assignslice()concat()拓展运算符 三、深拷贝_.cloneDeep()jQuery.extend()JSON.stringify()循环递归 四、区别小结 一、数据类型存储 前面文章我们讲到&#xff0c;JavaScript中存在两大数据类型&#xff1a; 基本类型引用类型 …

CorelCAD各版本安装指南

下载链接 https://pan.baidu.com/s/1v0VgYRaaRRUeAgJC__0rPw?pwd0531 1.鼠标右击【CorelCAD2023(64bit)】压缩包&#xff08;win11及以上系统需先点击“显示更多选项”&#xff09;选择【解压到 CorelCAD2023(64bit)】。 2.打开解压后的文件夹&#xff0c;鼠标右击【CorelCA…

Mybatis行为配置之Ⅱ—结果相关配置项说明

专栏精选 引入Mybatis Mybatis的快速入门 Mybatis的增删改查扩展功能说明 mapper映射的参数和结果 Mybatis复杂类型的结果映射 Mybatis基于注解的结果映射 Mybatis枚举类型处理和类型处理器 再谈动态SQL 文章目录 专栏精选引言摘要正文autoMappingBehaviorautoMappingU…

打开相机失败 出现错误的原因

如何解决&#xff1f; Debug中缺少DLL文件 以下参考周姐文档 相机调用步骤 学习相机第三方库的安装 https://blog.csdn.net/Qingshan_z/article/details/117257136书签&#xff1a;QT添加库&#xff08;静态库和动态库&#xff09;_Qingshan_z的博客-CSDN博客_qt添加库 添加文…

开发知识点-Weblogic

Weblogic 介绍CVE_2018_2628poc-yaml-weblogic-ssrfpoc-yaml-weblogic-cve-2017-10271poc-yaml-weblogic-cve-2019-2725poc-yaml-weblogic-cve-2019-2729-1poc-yaml-weblogic-cve-2019-2729-2poc-yaml-weblogic-cve-2020-14750poc-yaml-weblogic-local-cve-2022-21371-file-inc…

修改jenkins的目录(JENKINS_HOME)

默认JENKINS_HOME是/var/lib/jenkins/ 现要修改为/home/jenkins_data/jenkins 最开始 sudo cp -a /var/lib/jenkins/ /home/jenkins_data/ 然后如下操作&#xff1a; 1、首先 /etc/sysconfig/jenkins&#xff1a;jenkins配置文件&#xff0c;“端口”&#xff0c;“JENKIN…

数字 IC 笔试易混淆整理

signed 扩展 比较以下4段代码&#xff0c;给出W_DATA2的结果&#xff08;十进制或16进制或二进制&#xff09;&#xff1b; wire signed [3:0] W_DATA1 4b1000; wire signed [7:0] W_DATA2; assign W_DATA2 W_DATA1; wire [3:0] W_DATA1 4b1000; wire signed [7:0] W_DA…

JPEG的操作模式和数据

JPEG&#xff08;Joint Photographic Experts Group&#xff09;是一种广泛应用于图像压缩领域的标准。JPEG的操作模式和数据结构是实现图像压缩和解压缩的重要组成部分。本文将详细介绍JPEG的操作模式和数据结构&#xff0c;以及其在图像处理中的应用。 JPEG的操作模式主要包…