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中函数的用法实例教程
Sep 08 Python
python使用PyCharm进行远程开发和调试
Nov 02 Python
PyCharm代码整体缩进,反向缩进的方法
Jun 25 Python
python实现归并排序算法
Nov 22 Python
Python docx库用法示例分析
Feb 16 Python
python实现统计文本中单词出现的频率详解
May 20 Python
python pyinstaller打包exe报错的解决方法
Nov 02 Python
ubuntu 18.04 安装opencv3.4.5的教程(图解)
Nov 04 Python
Python谱减法语音降噪实例
Dec 18 Python
Python操作PostgreSql数据库的方法(基本的增删改查)
Dec 29 Python
详解Python requests模块
Jun 21 Python
使用pandas生成/读取csv文件的方法实例
Jul 09 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学习资源和链接.
2006/12/05 PHP
php 404错误页面实现代码
2009/06/22 PHP
php模板中出现空行解决方法
2011/03/08 PHP
thinkPHP框架实现类似java过滤器的简单方法示例
2018/09/05 PHP
ThinkPHP5 的简单搭建和使用详解
2018/11/15 PHP
js模仿windows桌面图标排列算法具体实现(附图)
2013/06/16 Javascript
javascript ajax 仿百度分页函数
2013/10/29 Javascript
css配合jquery美化 select
2013/11/29 Javascript
js动态调用css属性的小规律及实例说明
2013/12/28 Javascript
window.showModalDialog()返回值的学习心得总结
2014/01/07 Javascript
使用delegate方法为一个tr标签加一个链接
2014/06/27 Javascript
javascript中一些util方法汇总
2015/06/10 Javascript
详解Weex基于Vue2.0开发模板搭建
2017/03/20 Javascript
简单实现JavaScript弹幕效果
2020/08/27 Javascript
利用C/C++编写node.js原生模块的方法教程
2017/07/07 Javascript
用最简单的方法判断JavaScript中this的指向(推荐)
2017/09/04 Javascript
jQueryMobile之窗体长内容的缺陷与解决方法实例分析
2017/09/20 jQuery
[37:37]DAC2018 4.4 淘汰赛 Optic vs Mineski 第二场
2018/04/05 DOTA
零基础写python爬虫之爬虫框架Scrapy安装配置
2014/11/06 Python
在Python操作时间和日期之asctime()方法的使用
2015/05/22 Python
Python中异常重试的解决方案详解
2017/05/05 Python
Python实现读写INI配置文件的方法示例
2018/06/09 Python
Python实现的字典排序操作示例【按键名key与键值value排序】
2018/12/21 Python
解决python中使用PYQT时中文乱码问题
2019/06/17 Python
如何更改 pandas dataframe 中两列的位置
2019/12/27 Python
html+js 实现markdown编辑器效果
2019/10/23 HTML / CSS
什么是典型的软件三层结构?软件设计为什么要分层?软件分层有什么好处?
2012/03/14 面试题
环境科学毕业生自荐信
2013/11/21 职场文书
土木工程求职信
2014/05/29 职场文书
销售代理协议书
2014/09/30 职场文书
2014年环境卫生工作总结
2014/11/24 职场文书
安装工程师岗位职责
2015/02/13 职场文书
2016元旦晚会主持词开场白和结束语
2015/12/04 职场文书
Python快速优雅的批量修改Word文档样式
2021/05/20 Python
只用50行Python代码爬取网络美女高清图片
2021/06/02 Python
Python中的tkinter库简单案例详解
2022/01/22 Python