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 ...
随机推荐
- 用c语言调用Easy X实现图像的输出,附带音乐的读取
要实现此功能需要用EasyX 一.下载VS编译环境和EasyX. ①Vs2019https://iwx.mail.qq.com/ftn/download?func=3&key=9e9b6c33 ...
- select into 与 insert into 的区别
1.select * into table_A from table_B table_A是个新创建表,table_B是个已经存在的表. 2.insert into table_A from tabl ...
- 《Unix 网络编程》15:Unix 域协议
Unix 域协议 ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ 本 ...
- model.apply(fn)或net.apply(fn)
详情可参考:https://pytorch.org/docs/1.11/generated/torch.nn.Module.html?highlight=torch%20nn%20module%20a ...
- Docker安装Jenkins打包Maven项目为Docker镜像并运行【保姆级图文教学】
一.前言 Jenkins作为CI.CD的先驱者,虽然现在的风头没有Gitlab强了,但是还是老当益壮,很多中小公司还是使用比较广泛的.最近小编经历了一次Jenkins发包,感觉还不错,所以自己学习了一 ...
- 倾斜摄影3D模型|手工建模|BIM模型 轻量化处理
一.什么是大场景? 顾名思义,大场景就是能够从一个鸟瞰的角度看到一个大型场景的全貌,比如一个园区.一座城市.一个国家甚至是整个地球.但过去都以图片记录下大场景,如今我们可以通过建造3D模型来还原大场景 ...
- Obsidian基础教程
Obsidian基础教程 相关链接 2021年新教程 - Obsidian中文教程 - Obsidian Publish 软通达 基础设置篇 1. 开启实时预览 开启实时预览模式,所见即所得 打开设置 ...
- 【python基础】第07回 运算符和流程控制 2
本章内容概要 1.逻辑运算符补充 2.循环结构 本章内容详解 1.逻辑运算符补充 两边都不为0的情况 or 直接取前面的值 and 直接取后面的值如果存在0的情况 and 直接取0 or 直接取非0 ...
- 手把手教你实现在Monaco Editor中使用VSCode主题
背景 笔者开源了一个小项目code-run,类似codepen的一个工具,其中代码编辑器使用的是微软的Monaco Editor,这个库是直接从VSCode的源码中生成的,只不过是做了一点修改让它支持 ...
- Set集合转换为List集合
举个栗子,看图: