python操作ini文件
简介
ini文件作为常见的配置文件,因此需要对ini文件做处理,此处使用configparser模块,本文介绍以下ini文件常用的处理方式。
需要读取的ini文件
如下文件,[ ]包含的称为section,其下面的称为option
; section
[timeout]
; option
timeout = 10
[max_time]
max_time = 200
[min_time]
min_time = 10
[city]
city = ['南京', "北京", "武汉"]
读取ini文件
通常写法
import pathlib
import configparser
ini_path = pathlib.Path(__file__).parent.joinpath("test.ini")
# 获取ini文件对象
config = configparser.ConfigParser()
# 读取ini的文件名称
config.read(ini_path, encoding="utf8")
# 获取section为city, option为city的值
print(config.get("city", "city"))
# 获取section为timeout, option为timeout的值
print(config.get("timeout", "timeout"))
# 获取所有的sections,以列表形式返回
print(config.sections())
# 获取sections为timeout的所有options,以列表形式返回
print(config.options("timeout"))
# 判断section是否包含timeout
print(config.has_section("timeout"))
# 判断section是否包含timeout2
print(config.has_section("timeout2"))
# 判断section为timeout的下面是否包含timeout
print(config.has_option("timeout", "timeout"))
# 判断section为timeout的下面是否包含timeout2
print(config.has_option("timeout", "timeout2"))
['南京', "北京", "武汉"]
10
['timeout', 'max_time', 'min_time', 'city']
['timeout', 'timeout2']
True
False
True
False
需要注意的是,当读取的值包含中文时,需要在read的时候添加encoding编码为utf8,以保证不会出现乱码。
读取ini配置的几种方式
读取的来源不同,但后续的读取信息的操作都是一致的
从字典中读取ini配置
这可以从字典中读取对应key的value,不过一般对于某个key的value值直接使用索引读取即可,但这个可以方便读取到某一层级的所有key值以及是否包含某个key。
dict_data = {
"timeout": {"timeout": 10, "timeout2": 20},
"max_time": {"max_time": 200},
"min_time": {"min_time": 10},
"city": {"city": ["南京", "北京", "武汉"]},
}
config.read_dict(dict_data)
print(config.get("city", "city"))
print(config.get("timeout", "timeout"))
print(config.sections())
print(config.options("timeout"))
从给定字符串中读取ini配置
这种方法相当于将直接从ini文件的字符串中读取,一般不会这么做
with open(ini_path, mode="r", encoding="utf8") as f:
data = f.read()
print(data)
config.read_string(data)
print(config.get("city", "city"))
print(config.get("timeout", "timeout"))
print(config.sections())
print(config.options("timeout"))
读取ini文件的文件对象
使用open获取fp对象进行操作, f.name可以省略
# 已废弃,使用read_file代替
config.readfp()
with open(ini_path, encoding="utf8") as f:
config.read_file(f, f.name)
print(config.get("city", "city"))
print(config.get("timeout", "timeout"))
print(config.sections())
print(config.options("timeout"))
读取ini的文件名称或者path对象也可以
上述通常已介绍,此处不再赘述。
config.read(ini_path, encoding="utf8")
另外,在读取配置时候可以指定读取值的类型
config.getboolean
config.getfloat
config.getint
写入ini文件
import pathlib
import configparser
ini_path = pathlib.Path(__file__).parent.joinpath("test.ini")
config = configparser.ConfigParser()
# 添加section
config.add_section("huawei")
# 添加option并设置值,只能是string值
config.set("huawei", "huawei", "1")
# 写入ini文件,注意写入的mode会影响是否覆盖ini文件
with open(ini_path, "a+", encoding="utf8") as f:
config.write(f)
补充
configparser中其实有三个,分别是
# 通常是最常用的解析ini文件的配置
configparser.ConfigParser()
# 可以匹配正则的标题和选项的配置,类似于模糊查询的那种
configparser.RawConfigParser()
# 已废弃,与configparser.ConfigParser()作用一致,在python3.2后改为前者,将在python3.12中删除
configparser.SafeConfigParser()
python操作ini文件的更多相关文章
- python解析ini文件
python解析ini文件 使用configparser - Configuration file parser sections() add_section(section) has_section ...
- 关于C#操作INI文件的总结
原文:关于C#操作INI文件的总结 INI文件其实是一种具有特定结构的文本文件,它的构成分为三部分,结构如下: [Section1]key 1 = value2key 1 = value2--[S ...
- Python操作Zip文件
Python操作Zip文件 需要使用到zipfile模块 读取Zip文件 随便一个zip文件,我这里用了bb.zip,就是一个文件夹bb,里面有个文件aa.txt. import zipfile # ...
- C#利用Vini.cs操作INI文件
VClassLib-CS项目Github地址:https://github.com/velscode/VClassLib-CS VINI文档地址:https://github.com/velscode ...
- 【python-ini】python读写ini文件
[python-ini]python读写ini文件 本文实例讲述了Python读写ini文件的方法.分享给大家供大家参考.具体如下: 比如有一个文件update.ini,里面有这些内容: 1 2 ...
- [转]C#操作INI文件
在很多的程序中,我们都会看到有以.ini为后缀名的文件,这个文件可以很方便的对程序配置的一些信息进行设置和读取,比如说我们在做一个程序后台登陆的时候,需要自动登录或者是远程配置数据库连接,及保存密码设 ...
- python操作txt文件中数据教程[4]-python去掉txt文件行尾换行
python操作txt文件中数据教程[4]-python去掉txt文件行尾换行 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考文章 python操作txt文件中数据教程[1]-使用pyt ...
- python操作txt文件中数据教程[3]-python读取文件夹中所有txt文件并将数据转为csv文件
python操作txt文件中数据教程[3]-python读取文件夹中所有txt文件并将数据转为csv文件 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考文献 python操作txt文件中 ...
- python操作txt文件中数据教程[2]-python提取txt文件
python操作txt文件中数据教程[2]-python提取txt文件中的行列元素 觉得有用的话,欢迎一起讨论相互学习~Follow Me 原始txt文件 程序实现后结果-将txt中元素提取并保存在c ...
随机推荐
- Vue报错: Uncaught (in promise) TypeError: Cannot read properties of undefined (reading 'protocol')
Vue报错: Uncaught (in promise) TypeError: Cannot read properties of undefined (reading 'protocol') 报错信 ...
- MyBatisPlus实现分页和查询操作就这么简单
<SpringBoot整合MybatisPlus基本的增删改查,保姆级教程>在这篇文章中,我们详细介绍了分页的具体实现方法.但是,在日常的开发中还需要搜索功能的.下面让我们一起动起手来,实 ...
- AM57x 多核SoC开发板——GPMC的多通道AD采集综合案例手册(上)
目 录 1 ----案例功能 2 ----操作说明 2.1 ----硬件连接 2.2 ----案例测试 2.3 ----使用CCS查看信号波形 2.3.1 ----加载Symbols信息表 2.3.2 ...
- el-form 中的数组表单验证(数组可动态添加删除)
除了一些简单的表单验证之外,我们还会有一些稍微复杂点的多层级表单的验证,如下图所示可点击添加,删除对数组进行操作,当点击确定时需要验证每一条form-item不能为空 其tempalte部分主要代码如 ...
- fpn(feature-Pyramid-network)学习笔记
FPN(特征金字塔网络)学习笔记 论文 在物体检测里面,有限计算量情况下,网络的深度(对应到感受野)与 stride 通常是一对矛盾的东西,常用的网络结构对应的 stride 一般会比较大(如 32) ...
- C# 四舍五入中一处易错点
,你没看错,四舍五入的结果 和我们期待的不太一样 Why?? 进入源码看下,注释中解释的很清楚.. 默认情况下,Math.Round()方法返回的是最接近的整数,这个没问题,问题是当要转换的数据在 两 ...
- Django-request的常见属性
瞧一瞧,看一看,Django时,获取Request的各个属性. Request的常见属性 request.META 返回一个python字典.它包含了所有的HTTP请求信息.如下代码: 点击查看代码 ...
- .NET C#基础(3):事件 - 不便处理的事就委托出去
0. 文章目的 本文面向有一定.NET C#基础知识的学习者,介绍.NET中事件的相关概念.基本知识及其使用方法 1. 阅读基础 理解C#基本语法(方法的声明.方法的调用.类的定义) 2. 从 ...
- mac mini 装UBUNTU后没有WIFI解决办法
1.在终端中运行如下命令,重新安装b43相关的全部驱动和firmware: 复制代码 代码如下: sudo apt-get install bcmwl-kernel-source #Broadcom ...
- Bika LIMS 开源LIMS集——ERD实体关系定义(数据库设计)
系统数据分类 数据分为四类: template 模板,基础静态数据 static 静态数据,核心静态数据,检测方法等 dynamic 动态数据,样品检测流程数据 organisation 组织机构数据 ...