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获取apk文件URL地址实例
Nov 01 Python
Python性能优化技巧
Mar 09 Python
Python中使用PyQt把网页转换成PDF操作代码实例
Apr 23 Python
在python中pandas读文件,有中文字符的方法
Dec 12 Python
75条笑死人的知乎神回复,用60行代码就爬完了
May 06 Python
PyQt5创建一个新窗口的实例
Jun 20 Python
python中比较两个列表的实例方法
Jul 04 Python
Django在admin后台集成TinyMCE富文本编辑器的例子
Aug 09 Python
Django 多对多字段的更新和插入数据实例
Mar 31 Python
Python decorator拦截器代码实例解析
Apr 04 Python
Python如何实现的二分查找算法
May 27 Python
Python Django框架介绍之模板标签及模板的继承
May 27 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
无线电广播与收音机发展的历史回眸
2021/03/02 无线电
Zend引擎的发展 [15]
2006/10/09 PHP
微信公众号开发之语音消息识别php代码
2016/08/08 PHP
PHP实现加密文本文件并限制特定页面的存取的效果
2016/10/21 PHP
键盘控制事件应用教程大全
2006/11/24 Javascript
javascript用户注册提示效果的简单实例
2013/08/17 Javascript
jQuery选择器源码解读(六):Sizzle选择器匹配逻辑分析
2015/03/31 Javascript
JS简单测试循环运行时间的方法
2016/09/04 Javascript
jQuery实现文件编码成base64并通过AJAX上传的方法
2018/04/12 jQuery
React diff算法的实现示例
2018/04/20 Javascript
微信运维交互机器人的示例代码
2018/11/12 Javascript
如何在Angular应用中创建包含组件方法示例
2019/03/23 Javascript
解决layui table表单提示数据接口请求异常的问题
2019/09/24 Javascript
jquery获取并修改触发事件的DOM元素示例【基于target 属性】
2019/10/10 jQuery
javascript实现画板功能
2020/04/12 Javascript
Python学习思维导图(必看篇)
2017/06/26 Python
Python的UTC时间转换讲解
2019/02/26 Python
python Django的web开发实例(入门)
2019/07/31 Python
django ManyToManyField多对多关系的实例详解
2019/08/09 Python
pytorch 固定部分参数训练的方法
2019/08/17 Python
详解Python修复遥感影像条带的两种方式
2020/02/23 Python
django之导入并执行自定义的函数模块图解
2020/04/01 Python
CSS3中的@keyframes关键帧动画的选择器绑定
2016/06/13 HTML / CSS
美国电视购物HSN官网:HSN
2016/09/07 全球购物
墨尔本最受欢迎的复古风格品牌:Princess Highway
2018/12/21 全球购物
Groupon西班牙官方网站:在线优惠券和交易,节省高达70%
2021/03/13 全球购物
酒店总经理职务说明书
2014/02/26 职场文书
4S店售后客服自我评价
2014/04/09 职场文书
代理协议书
2014/04/22 职场文书
社会稳定风险评估方案
2014/06/02 职场文书
财务总监岗位职责范本
2015/04/03 职场文书
入伍通知书
2015/04/23 职场文书
2016秋季小学开学寄语
2015/12/03 职场文书
Go各时间字符串使用解析
2021/04/02 Golang
python自动化之如何利用allure生成测试报告
2021/05/02 Python
MySQL中正则表达式(REGEXP)使用详解
2022/07/07 MySQL