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将mdb数据库文件导入postgresql数据库示例
Feb 17 Python
python写xml文件的操作实例
Oct 05 Python
Python中functools模块的常用函数解析
Jun 30 Python
python 重定向获取真实url的方法
May 11 Python
Python实现朴素贝叶斯分类器的方法详解
Jul 04 Python
tensorflow 用矩阵运算替换for循环 用tf.tile而不写for的方法
Jul 27 Python
python使用turtle库绘制奥运五环
Feb 24 Python
python 子类调用父类的构造函数实例
Mar 12 Python
python小程序之4名牌手洗牌发牌问题解析
May 15 Python
python3通过qq邮箱发送邮件以及附件
May 20 Python
python 浮点数四舍五入需要注意的地方
Aug 18 Python
Python 找出英文单词列表(list)中最长单词链
Dec 14 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
PHP实现登陆并抓取微信列表中最新一组微信消息的方法
2017/07/10 PHP
DOM 中的事件处理介绍
2012/01/18 Javascript
script标签属性type与language使用选择
2012/12/02 Javascript
js模拟点击以提交表单为例兼容主流浏览器
2013/11/29 Javascript
原创jQuery弹出层插件分享
2015/04/02 Javascript
在AngularJS框架中处理数据建模的方式解析
2016/03/05 Javascript
基于Jquery插件Uploadify实现实时显示进度条上传图片
2020/03/26 Javascript
AngularJs 利用百度地图API 定位当前位置 获取地址信息
2017/01/18 Javascript
js数字计算 误差问题的快速解决方法
2017/02/28 Javascript
jQuery插件echarts实现的多柱子柱状图效果示例【附demo源码下载】
2017/03/04 Javascript
jquery图片放大镜效果
2017/06/23 jQuery
原生js调用json方法总结
2018/02/22 Javascript
JS实现滑动拼图验证功能完整示例
2020/03/29 Javascript
[00:43]TI7不朽珍藏III——幽鬼不朽展示
2017/07/15 DOTA
详解字典树Trie结构及其Python代码实现
2016/06/03 Python
Python简单实现控制电脑的方法
2018/01/22 Python
Python Charles抓包配置实现流程图解
2020/09/29 Python
专门出售各种儿童读物的网站:Put Me In The Story
2016/08/07 全球购物
阿玛尼意大利官网:Armani意大利
2018/10/30 全球购物
澳大利亚在线家具店:Luxo Living
2019/03/24 全球购物
如何估计一张表的大小(假设该表中有1万条数据)
2016/03/27 面试题
经贸日语专业个人求职信范文
2013/12/28 职场文书
医学生职业规划范文
2014/01/05 职场文书
偷看我的初中毕业鉴定
2014/01/29 职场文书
中餐厅经理岗位职责
2014/04/11 职场文书
村党的群众路线教育实践活动总结材料
2014/10/31 职场文书
2014年档案室工作总结
2014/12/01 职场文书
2014流动人口计划生育工作总结
2014/12/20 职场文书
2015年党风廉政建设责任书
2015/01/29 职场文书
仓库保管员岗位职责
2015/02/09 职场文书
工会工作个人总结
2015/03/03 职场文书
拔河比赛队名及霸气口号
2015/12/24 职场文书
2016应届大学生自荐信模板
2016/01/28 职场文书
基于Go Int转string几种方式性能测试
2021/04/28 Golang
教你使用TensorFlow2识别验证码
2021/06/11 Python
详细介绍python操作RabbitMq
2022/04/12 Python