Python3中configparser模块读写ini文件并解析配置的用法详解


Posted in Python onFebruary 18, 2020

Python3中configparser模块简介

configparser 是 Pyhton 标准库中用来解析配置文件的模块,并且内置方法和字典非常接近。Python2.x 中名为 ConfigParser,3.x 已更名小写,并加入了一些新功能。

配置文件的格式如下:

[DEFAULT]
ServerAliveInterval = 45
Compression = yes
CompressionLevel = 9
ForwardX11 = yes

[bitbucket.org]
User = Tom

[topsecret.com]
Port: 50022
ForwardX11: no

“[ ]”包含的为 section,section 下面为类似于 key - value 的配置内容;

configparser 默认支持 ‘=' ‘:' 两种分隔。

configparser 常用方法

初始化实例

使用 configparser 首先需要初始化实例,并读取配置文件:

>>> import configparser
>>> config = configparser.ConfigParser()  # 注意大小写
>>> config.read("config.ini")  # 配置文件的路径
["config.ini"]

或者可以直接读字典

>>> parser = configparser.ConfigParser()
>>> parser.read_dict({'section1': {'key1': 'value1',
...                'key2': 'value2',
...                'key3': 'value3'},
...          'section2': {'keyA': 'valueA',
...                'keyB': 'valueB',
...                'keyC': 'valueC'},
...          'section3': {'foo': 'x',
...                'bar': 'y',
...                'baz': 'z'}
... })

获取所有 sections

>>> config.sections()
['bitbucket.org', 'topsecret.com']  # 注意会过滤掉[DEFAULT]

获取指定 section 的 keys & values

>>> config.items('topsecret.com')
>>>> [('port', '50022'), ('forwardx11', 'no')]  # 注意items()返回的字符串会全变成小写

获取指定 section 的 keys

>>> config.options('topsecret.com')
['Port', 'ForwardX11']
>>> for option in config['topsecret.com']:
...   print(option)
Port
ForwardX11

获取指定 key 的 value

>>> config['bitbucket.org']['User']
'Tom'
>>> config.get('bitbucket.org', 'User')
'Tom'
>>> config.getint('topsecret.com', 'Port')
50022

configparser模块检查

>>> 'DEFAULT' in config
True
>>> 'test' in config['section_test']
False
>>> 'Tom' in config['bitbucket.org']['User']
True
>>> config.has_section('bitbucket.org')
True
>>> config.has_option('section_test', 'test')
False

configparser模块添加

>>> config.add_section('Section_1')
>>> config.set('Section_1', 'key_1', 'value_1')  # 注意键值是用set()方法
>>> config.write(open('config.ini', 'w'))  # 一定要写入才生效

configparser模块删除

>>> config.remove_option('Section_1', 'key_1')
True
>>> config.remove_section('Section_1')
True
>>> config.clear() # 清空除[DEFAULT]之外所有内容
>>> config.write(open('config.ini', 'w'))

关于 [DEFAULT]

[DEFAULT] 一般包含 ini 格式配置文件的默认项,所以 configparser 部分方法会自动跳过这个 section 。

前面已经提到 sections() 是获取不到的,还有删除方法对 [DEFAULT] 也无效:

>>> config.remove_section('DEFAULT')
False
>>> config.clear()
>>> 'DEFAULT' in config
True
>>> 'ForwardX11' in config['DEFAULT']
True
>>> config.sections()
[]

但指定删除和修改 [DEFAULT] 里的 keys & values 是可以的:

>>> config.remove_option('DEFAULT', 'ForwardX11')
True
>>> config.set('DEFAULT', 'ForwardX11','no')
>>> config['DEFAULT']['ForwardX11']
'no'

还有个特殊的是,has_section() 也无效,可以和 in 区别使用

>>> config.has_section('DEFAULT')
False
>>> 'DEFAULT' in config
True

更多关于Python3中configparser模块读写ini文件并解析配置的用法请查看下面的相关链接

Python 相关文章推荐
python通过colorama模块在控制台输出彩色文字的方法
Mar 19 Python
详解python3百度指数抓取实例
Dec 12 Python
Django的分页器实例(paginator)
Dec 01 Python
详解Python如何生成词云的方法
Jun 01 Python
python使用magic模块进行文件类型识别方法
Dec 08 Python
python实现连续图文识别
Dec 18 Python
python绘制地震散点图
Jun 18 Python
Python Django模板之模板过滤器与自定义模板过滤器示例
Oct 18 Python
使用pyshp包进行shapefile文件修改的例子
Dec 06 Python
windows下Pycharm安装opencv的多种方法
Mar 05 Python
在matplotlib中改变figure的布局和大小实例
Apr 23 Python
聊聊pytorch测试的时候为何要加上model.eval()
May 23 Python
Pytorch mask_select 函数的用法详解
Feb 18 #Python
pytorch masked_fill报错的解决
Feb 18 #Python
python分别打包出32位和64位应用程序
Feb 18 #Python
pandas和spark dataframe互相转换实例详解
Feb 18 #Python
PyTorch中Tensor的数据统计示例
Feb 17 #Python
pytorch实现Tensor变量之间的转换
Feb 17 #Python
Macbook安装Python最新版本、GUI开发环境、图像处理、视频处理环境详解
Feb 17 #Python
You might like
Thinkphp实现自动验证和自动完成
2015/12/19 PHP
JavaScript 内置对象属性及方法集合
2010/07/04 Javascript
Extjs中ComboBox加载并赋初值的实现方法
2012/03/22 Javascript
javascript向后台传送相同属性的参数即数组参数
2014/02/17 Javascript
jQuery绑定事件不执行但alert后可以正常执行
2014/06/03 Javascript
原生js结合html5制作简易的双色子游戏
2015/03/30 Javascript
JS+CSS实现简易的滑动门效果代码
2015/09/24 Javascript
详解js实现线段交点的三种算法
2016/08/09 Javascript
jQuery 遍历map()方法详解
2016/11/04 Javascript
jQuery中值得注意的trigger方法浅析
2016/12/12 Javascript
Bootstrap 填充Json数据的实例代码
2017/01/11 Javascript
使用JavaScript判断用户输入的是否为正整数(两种方法)
2017/02/05 Javascript
nodejs高大上的部署方式(PM2)
2018/09/11 NodeJs
详解@Vue/Cli 3 Invalid Host header 错误解决办法
2019/01/02 Javascript
Layui 解决表格异步调用后台分页的问题
2019/10/26 Javascript
js中!和!!的区别与用法
2020/05/09 Javascript
javascript实现一款好看的秒表计时器
2020/09/05 Javascript
Python天气预报采集器实现代码(网页爬虫)
2012/10/07 Python
Python使用turtule画五角星的方法
2015/07/09 Python
基于Python log 的正确打开方式
2018/04/28 Python
使用python判断你是青少年还是老年人
2018/11/29 Python
django admin后台添加导出excel功能示例代码
2019/05/15 Python
python类中super() 的使用解析
2019/12/19 Python
Python pip install如何修改默认下载路径
2020/04/29 Python
django创建css文件夹的具体方法
2020/07/31 Python
linux centos 7.x 安装 python3.x 替换 python2.x的过程解析
2020/12/14 Python
GOOD AMERICAN官网:为曲线性感而设计
2017/12/28 全球购物
Book Depository亚太地区:一家领先的国际图书零售商
2019/05/05 全球购物
为您搜罗全球潮流時尚品牌:HBX
2019/12/04 全球购物
VisionPros美国站:加拿大在线隐形眼镜和眼镜零售商
2020/02/11 全球购物
迪卡侬(Decathlon)加拿大官网:源自法国的运动专业超市
2020/11/22 全球购物
市场营销管理制度
2014/01/29 职场文书
先进个人事迹材料
2014/12/29 职场文书
情况说明书格式及范文
2019/06/24 职场文书
Go语言基础知识点介绍
2021/07/04 Golang
攻略丨滑雪究竟该选哪款对讲机?
2022/02/18 无线电