Python库configparser教程

别再自己写消息提示了!5分钟用WPF+Material Design打造专业级Snackbar(支持.NET 6) 本文为WPF开发者提供了一份快速集成专业级Snackbar消息提示的实战指南。通过引入MaterialDesignThemes开源库,在.NET 6 WPF项目中,仅需5分钟即可告别传统的MessageBox,实现遵循Material Design规范、动画流畅、支持队列管理的非侵入式Snackbar控件,显著提升应用的用户体验与现代化交互水平。 阅读详情

前言

configparser是Python中的一个配置文件解析库,可以读取配置文件中的变量和值。配置文件有什么作用呢?作用就是当你写程序的时候,有一些固定的值,但这些值虽然暂时不会更改,但是并不确定以后会不会改变。
例如:在你的程序中有一个变量price = 100为定值,但是可能一段时间后price = 200那么你将如何改变?也许你可以手动一个个改,或者稍微效率高点的使用编辑器的替换功能(但是这样难免保证不小心把其他变量也替换了)。这时候配置文件就有很大作用了,当你需要改变这些变量时,只需要更改配置文件,就可以轻松改变程序中所有值了。
下面,我们来开始了解一下configparser模块吧!


初探configparser

配置文件

首先我们需要新建一个配置文件,在Windows中一般取后缀名为.ini,当然你也可以取其他的名字.cfg,.txt都行。好了,我们就新建一个demo.ini吧!现在我们朝它写入一些内容:

[DEFAULT]
User =Lee
Date=2019-05-16
WeekDay=4
IsWorkDay=True

这里我们定义了一个Section名为DEFAULT,里面的字段分别为:

  • User
  • Date
  • WeekDay
  • IsWorkDay

读入配置:

接下来,我们先导入configparser,并定义一个ConfigParser类

import configparser
parser = configparser.ConfigParser()

接下来读入配置文件

configPath = './demo.ini'
parser.read(configPath)

这里是从配置文件中读取,还有其他操作:

  • .read_dict(dictionary:从字典中读取。
  • .read_string(string):从字符串中读取。
  • .read_file(f):从文件指针中读取。eg:parser.read_file(open('./demo.ini'))

读取数据

读取数据可以使用类似字典dict的方法:

>>>parser['DEFAULT']['User']
'Lee'
# 等价于
>>>parser['DEFAULT']['user']
'Lee'

这里我们可以发现,文件存储的形式相当于一个字典,键名叫作option,并且DEFAULT段中的键名User不区分大小写,但是段名DEFAULT还是区分大小写的。
这里我们要注意的是,文件中的所有变量都是默认字符串形式,读取出来的类型都是字符串,对于其他类型的变量,我们可以对其进行转换,或者使用内置的方法,例如WeekDay:

>>>parser.getint('DEFAULT', 'WeekDay')
4

对于boolean型变量,可以i使用getboolean方法:

>>>parser.getboolean("DEFAULT", "IsWorkDay")
True

类似的还有.getfloat(section, option)返回float类型

同样也可以使用get()方法取字段中的option:

>>>parser.get("DEFAULT", "IsWorkDay")
'True'

这里比较推荐使用get()方法,因为字段中不存在某个option时,使用类似字典的方法会报错,而使用get()方法就可以设置fallback值,表示当不存在时返回的默认值。

>>>parser['DEFAULT']['does-not-exist']
Traceback (most recent call last):
  ...
KeyError: 'does-not-exist'

>>>parser.get("DEFAULT", "does-not-exist", fallback="")
''

这里我们设置了fallback为空,因此当option不存在时,返回空串而不是报错。


Section

Section增加

接下来我们要新增一个Section段,我们可以直接在配置文件中加入:

[DEFAULT]
User =Lee
Date=2019-05-16
WeekDay=4
IsWorkDay=True

# 新增Section1
[Section1]
Year=2019
Month=5
Day=16
Language=Pythoon
FilePath=./demo.ini

也可以在代码中写入:

parser['Section1'] = {"Year": 2019, "Month": 5, "Day": 16,
                      "Language": "Python", "FilePath": "./demo.ini"}

这里虽然我们写入的时候Year,Month,Day都为数值类型,但是默认是字符串,因此当你输出的时候还是字符串:

>>>parser.get('Section1', 'Year')
'2019'

我们还可以这样写入:

>>>parser.add_section('Section1')
>>>parser.set("Section1","Year", "2019") # 注意这里option的值必须为字符串类型

Section检索

我们可以查看是否存在Section:

>>>parser.has_section('Section1')
True

同理也可以查看是否存在option:

>>>parser.has_option('Section1','Year')
True

我们可以查看目前有几个Section:

>>>parser.sections()
['Section1']

怎么没有DEFAULT?
因为DEFAULT是配置文件中的默认字段,不属于一个Section
查看Section中的option:

>>>parser.options('Section1')
['year',
 'month',
 'day',
 'language',
 'filepath',
 'user',
 'date',
 'weekday',
 'isworkday']

你会发现,它不止返回了Section中的option,还返回了DEFAULT中的option,并且这个DEFAULT你无法在代码中删除它。
我们在文件内容中将其改名为Section0:

[Section0]
User=Lee
Date=2019-05-16
WeekDay=4
IsWorkDay=True

[Section1]
Year=2019
Month=5
Day=16
Language=Pythoon
FilePath=./demo.ini

然后

>>>parser.sections()
['Section0', 'Section1']
>>>parser.options('Section1')
['year', 'month', 'day', 'language', 'filepath']

好了这样舒服多了。
还可以查看某个Section中的option对:

>>>parser.items("Section1")
[('year', '2019'),
('month', '5'),
('day', '16'),
('language', 'Pythoon'),
('filepath', './demo.ini')]

Section删除

删除一个Section可以使用.remove_section()方法:

>>>parser.remove_section("Section1")
True

还有其他类似操作:

  • .popitem(),删除最上面的一个Section并返回,如果空则报错(类似栈的弹出)
  • .clear(),删除所有Section
  • .remove_option(section, option)删除某个Section中的option

高级操作

单个option对应多行值

更改下配置文件中Section0的内容

[Section0]
User=Lee 
  James # 注意前面必须缩进!
  Michael
Date=2019-05-16
WeekDay=4
IsWorkDay=True

使得单个option对应多个值Lee``James``Michael

>>>print(parser["Section0"]["user"])
Lee
James
Michael
单个option无对应值
[Section0]
User=Lee 
  James # 注意前面必须缩进!
  Michael
Date=2019-05-16
Tomorrow   # 无对应值
WeekDay=4
Today     # 无对应值
IsWorkDay=True

这里我们增加了两个无对应值的option,但是注意:
开头必须设置allow_no_value=True

parser = configparser.ConfigParser(allow_no_value=True)

然后,读取所有option:

>>>parser.options("Section0")  
['user', 'date', 'tomorrow', 'weekday', 'today', 'isworkday']
>>>parser.get("Section0","Tomorrow")  # 输出空
Interpolation 插值
BasicInterpolation

BasicInterpolation是默认的Interpolation类,我们可以定义类似占位符一样的形式来进行插值操作,我们先修改Section0如下:

[Section0]
Year=2019
Month=5
Day=16
Date=%(Year)s-%(Month)s-%(Day)s
>>>parser.get("Section0","Date")
'2019-5-16'

这里我们利用的是类似C语言中的%s,形式为%(option)s

parser.get("Section0","Date", raw=True)  # 许多方法都有这个raw参数来输出raw字符串

或者在开头定义parser时设置:

parser = ConfigParser(interpolation =None)

输出则变成:

>>>parser.get("Section0","Date")
'%(Year)s-%(Month)s-%(Day)s'
ExtendedInterpolation

或者我们可以使用ExtendedInterpolation()类
修改Section0如下:

[Section0]
Year=2019
Month=5
Day=16
Date=${Year}-${Month}-${Day}

得到同样的效果

>>>parser.get("Section0","Date")
'2019-5-16'

注意这时候格式是:${section:option},也就是可以设置某个Section中的某个option,即可以使用别的段中的option,比如我们修改文件内容如下:

[Section0]
Date=${Section1:Year}-${Section1:Month}-${Section1:Day}

[Section1]
Year=2019
Month=5
Day=16

一样的结果:

>>>parser.get("Section0","Date")
'2019-5-16'

总结

.ini文件中:

  • 文件中的任何变量形式都是字符串
  • option对可以用=或:来表示键值对应
  • option键名不区分大小写,Section名区分
  • 文件中多余的空白符会被默认去掉
  • option的值可以多行,也可为空
  • 注释以#或者;开头
机器人控制算法九之 位姿描述与空间变换 阅读详情

相关推荐

SpringBoot项目整合Knife4j接口文档

写满接口信息的文档,每条接口包括:请求参数,响应参数,接口地址,接口名称,请求类型,请求格式,备注。

诨号无敌鸭的博客 1017

ConfigParser —— 一个必备的 Python 库

ConfigParser 是 Python标准库中的一个模块,用于读写INI配置文件。它是Python官方提供的一种处理INI文件的解决方案,可以简化配置文件的读写操作。ConfigParser 模块支持 Python 2 和 Python 3 版本,因此可以在各个Python版本中使用。如果你熟悉INI文件格式,那么使用 ConfigParser 模块读写 INI 文件将非常简单和直观。

m0_59236602的博客 1354

Cloudflare 5秒盾逆向实战:从503到cf_clearance的全流程拆解(附避坑指南)

本文深入拆解了Cloudflare 5秒盾的完整逆向流程,从首次503响应到最终获取cf_clearance令牌,详细解析了五层挑战机制。文章重点分享了实战中的核心避坑指南,包括时间戳校验、动态图片尺寸获取、会话保持方案选择以及复杂环境检测的应对策略,为开发者提供了一套绕过5秒盾的实用方法论。

weixin_29327977的博客 2315

python-配置文件库ConfigParser介绍

配置文件的格式:中括号“[ ]”内包含的为section。section 下面为类似于key-value 的配置内容,section内的每一项被称之为一个option。比如下面这份名为config.ini文件的内容就是一份典型的ConfigParser格式的文件案例。ConfigParser 是用来读取配置文件的包。使用ConfigParser需要引入对应的包。接下来可以了解一下这个库的常用方法。

qq_30361651的博客 1469

海思Hi3516CV610--SPI NAND Flash移植实战:从手册到驱动的完整适配

本文详细介绍了海思Hi3516CV610芯片上SPI NAND Flash的移植实战,包括从手册解读到驱动适配的完整流程。以GD5F2GM7UEYIGR Flash为例,重点讲解了关键参数确认、模式选择、时序配置以及U-Boot和Linux内核驱动的具体实现步骤,帮助开发者快速完成Flash移植工作。

weixin_29158413的博客 447

GOM Correlate拉伸试验后处理操作

本文描述了使用GOM Software 2022对拉伸试样进行后处理的操作,包括设置检测点、引伸计、输出应变数据到表格、输出报告为视频等

qq_45008924的博客 4667

【python第三方库】configparser---python解析config文件入门

传递参数使用函数optionxform(),foo %(bar)s 和 foo %(BAR)s是相同的,optionxform()会将大写字母全部转换为小写。这个使用根据个人喜好和项目来确定,不一定一定要使用这个模块,也可以使用其它的方法做配置,比如py文件、xml、excel、yaml、json等等。在调用这三个函数时,切记这三个函数会将调用optionxform(),在传递键值对数据时,会将键名 全部转化为小写。一般做自动化测试的时候,会使用到这个模块,用来封装一些常量。.这个模块定义了一个。...

All_In_gzx_cc的博客 2879

生信入门(六)——单细胞分析(Seurat)

生信入门(六)——单细胞分析(Seurat) 文章目录生信入门(六)——单细胞分析(Seurat)一、数据导入1、数据来源2、数据导入二、标准预处理1、QC和选择细胞进行进一步分析2、规范化数据3、识别高度可变的特征(特征选择)4、缩放数据三、主成分分析(PCA)1、线性降维2、确定数据集的“维度”四、聚类细胞五、非线性降维(UMAP/tSNE)六、寻找差异表达的特征(簇生物标志物) 一、数据导入 1、数据来源 点击此处下载数据 数据说明:分析10X Genomics提供的外周血单细胞(PBMC)数据集,有

羊羊的博客 6万+

python-ConfigParser-配置文件读写库

python3里面自带configparser模块来读取ini、conf文件用来读取配置文件的python包;一般做自动化测试的时候,会使用到这个模块,用来封装一些常量。比如数据库、邮件、用户名密码、项目常量等等;这个使用根据个人喜好和项目来确定,不一定一定要使用这个模块,也可以使用其它的方法做配置,比如py文件、xml、excel、yaml、json等等。configparser源码大约1360行左右,通读源码可有效了解该模块的使用。本文只做简单介绍常用的方法。

***** 2327

c#【保姆级教程】基于System.Text.Json 支持多态类型序列化! 手把手教你实现一个通用的 PolymorphicJsonConverter!

我们需要自己实现一个继承自的转换器,在序列化时记录具体类型,在反序列化时根据类型标识还原成正确的子类对象。public abstract class WorkStepBase { /* 抽象方法等 */ }public class Person : WorkStepBase { /* 实现 */ }public class Product : WorkStepBase { /* 实现 */ }特性说明✅ 自动发现子类无需手动维护类型列表,自动扫描程序集✅ 类名映射。

一个编程的同学 426

移植Google Gemini Nano到RK3588 NPU,实现高效边缘推理

在嵌入式 AI 开发中,大家常常会遇到模型在硬件平台上运行时出现性能瓶颈的问题,比如推理速度慢、功耗过高,这严重影响了应用的实时性和稳定性 ,导致性能瓶颈,无法满足如智能安防、工业检测等场景的实时性需求。为了解决这些问题,我们可以将轻量模型移植到具有强大算力的硬件平台上。本文将手把手教你将 Google Gemini Nano(或类似轻量模型)移植到 RK3588 NPU,充分发挥 RK3588 NPU 的 6Tops 算力,实现高效的模型推理,提升嵌入式系统的 AI 处理能力。

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 298

【python】configparser库 的详细解析

针对 Python 标准库 configparser 的详细解析,涵盖其核心功能、高级用法和常见问题解决方案。

浩瀚之水的专栏 1326

lammps教程:MS转data文件出错原因分析及解决办法

使用ms建模是lammps建模的一种重要方法,但是ms建模转换为data过程中经常会出现各种各样的错误。 ms模型转data文件流程分两部分,一是ms建模、forcite设置力场并导出car文件,二是msi2lmp将car转为data文件。 任何一个环节出错都会导致无法得到data文件,最容易出错的是forcite力场设置环节。 forcite力场设置出错原因有很多,一个原因是缺乏某类原子的力场参数。 msi2lmp软件只能转换cvff或pcff力场的car文件,因此,如果力场中不包含某类原子的参数,在设置

lammps_jiayou的博客 5062

Python连接sftp教程

(1)创建配置文件 config.ini [sftp] #远程路径 例如 aaa,子文件夹名称要有key REMOTE =aa #本地路径 LOCAL = out #主机 HOST= 127.0.0.1 #端口 PORT=22 #用户名 USERNAME =root #密码 PASSWORD =root (2)创建py # coding: utf-8 import paramiko import ConfigParser import sys,os import codecs import stat co

陈增林 1992

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Python全栈之路标准库系列之configparser模块

configparser用于处理特定格式的文件,其本质上是利用open来操作文件。 配置文件格式如下: # 第一种注释方式 ; 第二种注释方式 [node1] # 节点 k1 = v1 # key = value k2 : v2 # key : value 实例 创建一个file.conf文件,内容为空,然后进入pythonIDE: 在学习过程中有什么不懂得可以加我的 python学习交...

Python学习笔记 230

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Python ConfigParser 教程

Python ConfigParser 教程 本文介绍Python ConfigParser,展示如何在Python中使用ConfigParser处理配置文件。ConfigParser是解析Python查询配置文件类,配置文件一般类似于Windows ini文件。通过配置文件可以让用户对应用进行个性化配置。 配置文件有多个部分或组构成,每个部分都包括一组键值对。组名称使用[]进行标识。键值对使用:...

neweastsun的专栏 2828

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

python configparser库简介

随着脚本复杂程度增加, 配置文件成了必不可少。之前一直使用json文件,当作配置文件。比较之下,configparser 库更加适合。 下述文件为一个简单的configparser库的配置文件 config.ini [testdb] db_port = 3306 db_host = 127.0.0.1 db_user = root db_passwd = 123456 # remark [zhf...

ck3207的博客 828

python的ConfigParser模块

简介 ConfigParser模块在python3中修改为configparser.这个模块定义了一个ConfigParser类,该类的作用是使用配置文件生效,配置文件的格式和windows的INI文件的格式相同 该模块的作用 就是使用模块中的RawConfigParser()、ConfigParser()、 SafeConfigParser()这三个方法,创建一个对象使用对象的方法对指定的配置文...

python学习者的博客 2万+

Python ini格式配置文件管理利器:configparser 模块详解

Python 配置文件管理利器:configparser 模块详解

诸神缄默不语的博客 1620

python库——configParser

Configparser是用来读取配置文件的 在配置文件中,中括号[]内的称为section,section下的每一个key-value称为option 其用法如下: import configparser as configparser #初始化configParser config = configparser.ConfigParser() #以utf8编码读取配置文件 conf...

kshon的博客 347

python configparser模块_python configparser模块

简介ConfigParser模块在python3中修改为configparser.这个模块定义了一个ConfigParser类,该类的作用是使用配置文件生效,配置文件的格式和windows的INI文件的格式相同该模块的作用就是使用模块中的RawConfigParser()、ConfigParser()、 SafeConfigParser()这三个方法(三者择其一),创建一个对象使用对象的方法对指定...

weixin_39992483的博客 323

【python】详解使用configparser进行文件配置

        将代码中的配置项抽取到配置文件中,修改配置时不需要涉及到代码修改,这样就提高了代码的重用性,不再每次都去修改代码内部,极大的方便后期软件的维护。         configparser解析的配置文件的格式为ini的配置文件格式 (xxx.ini),就是文件中由多个section构成,每个section...

brucewong0516的博客 4763

ConfigParser模块教程

http://blog.youkuaiyun.com/zm2714/article/details/8002125 版权声明:本文为博主原创文章,未经博主允许不得转载。 目录(?)[+] configParser 模块用于操作配置文件 注:Parser汉译为“解析”之意。 配置文件的格式与windows ini文件类似,可以包含一个或多个节(section),每个节可

qq_30975321的博客 330

python【Configparser解析配置文件库】Python3中的configparser模块

文章目录configparser模块简介看一下configparser生成的配置文件的格式现在看一下类似上方的配置文件是如何生成的读文件内容修改 configparser模块简介 该模块适用于配置文件的格式与windows ini文件类似,可以包含一个或多个节(section),每个节可以有多个参数(键=值)。节与java原先的配置文件相同的格式 看一下configparser生成的配置文件的格式...

NJU phd 在读。 514

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

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

python探索 870

python configparser

configparser 这个库是配置文件读写库 主要方便我们快速读写配置文件 环境: python3.7 + win10 第0步:安装configparser库 pip install configparser 第1步:引用 from configparser import ConfigParser 第2步:创建对象: conf = ConfigParser() 第3步:写入配置文件: c...

忧郁沙的博客 469
上一篇: 利用Graphviz画神经网络框架图
下一篇: Git学习笔记
EdisonLeejt
博客等级 码龄9年 70粉丝 25原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值