简介

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文件的更多相关文章

  1. python解析ini文件

    python解析ini文件 使用configparser - Configuration file parser sections() add_section(section) has_section ...

  2. 关于C#操作INI文件的总结

    原文:关于C#操作INI文件的总结   INI文件其实是一种具有特定结构的文本文件,它的构成分为三部分,结构如下: [Section1]key 1 = value2key 1 = value2--[S ...

  3. Python操作Zip文件

    Python操作Zip文件 需要使用到zipfile模块 读取Zip文件 随便一个zip文件,我这里用了bb.zip,就是一个文件夹bb,里面有个文件aa.txt. import zipfile # ...

  4. C#利用Vini.cs操作INI文件

    VClassLib-CS项目Github地址:https://github.com/velscode/VClassLib-CS VINI文档地址:https://github.com/velscode ...

  5. 【python-ini】python读写ini文件

    [python-ini]python读写ini文件 本文实例讲述了Python读写ini文件的方法.分享给大家供大家参考.具体如下: 比如有一个文件update.ini,里面有这些内容:   1 2 ...

  6. [转]C#操作INI文件

    在很多的程序中,我们都会看到有以.ini为后缀名的文件,这个文件可以很方便的对程序配置的一些信息进行设置和读取,比如说我们在做一个程序后台登陆的时候,需要自动登录或者是远程配置数据库连接,及保存密码设 ...

  7. python操作txt文件中数据教程[4]-python去掉txt文件行尾换行

    python操作txt文件中数据教程[4]-python去掉txt文件行尾换行 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考文章 python操作txt文件中数据教程[1]-使用pyt ...

  8. python操作txt文件中数据教程[3]-python读取文件夹中所有txt文件并将数据转为csv文件

    python操作txt文件中数据教程[3]-python读取文件夹中所有txt文件并将数据转为csv文件 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考文献 python操作txt文件中 ...

  9. python操作txt文件中数据教程[2]-python提取txt文件

    python操作txt文件中数据教程[2]-python提取txt文件中的行列元素 觉得有用的话,欢迎一起讨论相互学习~Follow Me 原始txt文件 程序实现后结果-将txt中元素提取并保存在c ...

随机推荐

  1. 1┃音视频直播系统之浏览器中通过WebRTC访问摄像头

    一.WebRTC的由来 对于前端开发小伙伴而言,如果用 JavaScript 做音视频处理 在以前是不可想象的,因为首先就要考虑浏览器的性能是否跟得上音视频的采集 但是 Google 作为国际顶尖科技 ...

  2. Idea之常用插件

    效率提升 Jrebel 热部署插件,修改代码编译就生效,节省大量重启服务时间.热部署支持修改方法代码,方法定义,类定义,接口定义(包括swagger文档),修改资源文件,修改mapper.xml(需配 ...

  3. SpringBoot接入两套kafka集群

    引入依赖 compile 'org.springframework.kafka:spring-kafka' 第一套kafka配置 package myapp.kafka; import lombok. ...

  4. controller-tool的简单使用

    介绍 在上一篇code-generator简单介绍中重点介绍了如何使用code-generator来自动生成代码,通过自动生成的代码可以帮助我们像访问k8s内置资源那样来操作我们的CRD,其实就是帮助 ...

  5. linux篇-linux面试题汇总

    Linux经典面试题,看看你会几题? 1. 在Linux系统中,以 文件 方式访问设备 . 2. Linux内核引导时,从文件 /etc/fstab 中读取要加载的文件系统. 3. Linux文件系统 ...

  6. Android shape与selector标签使用

    原文地址:Android shape与selector标签使用 Android中提供一种xml的方式,让我们可以自由地定义背景,比较常用的就是shape标签和selector标签 shape shap ...

  7. column-文本对齐输出

    文本输出对齐,可以指定对应的分隔符,将上下文的字符串按分隔符列对齐. 语法 column [选项] 选项 -s 设置分隔符,默认为空格. -t 判断输入的列数来创建一个表,使列对齐. -c 设置显示的 ...

  8. 配置中心Nacos(服务发现)

    服务演变之路 单体应用架构 在刚开始的时候,企业的用户量.数据量规模都⽐较⼩,项⽬所有的功能模块都放在⼀个⼯程中编码.编译.打包并且部署在⼀个Tomcat容器中的架构模式就是单体应用架构,这样的架构既 ...

  9. JAVA - 启动一个线程是用run()还是start()?

    JAVA - 启动一个线程是用run()还是start()? 启动一个线程是调用start()方法,使线程所代表的虚拟处理机处于可运行状态,这意味着它可以由JVM调度并执行.这并不意味着线程就会立即运 ...

  10. python基础学习10

    python基础学习 内容概要 文件内光标的移动 文件数据修改 函数简介 函数语法结构 内容详情 文件内光标的移动 with open(r'路径','r',encoding='utf8') as f: ...