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去除所有html标签的方法
May 05 Python
Python入门之modf()方法的使用
May 15 Python
Python实现读取文件最后n行的方法
Feb 23 Python
python中验证码连通域分割的方法详解
Jun 04 Python
python读取一个目录下所有txt里面的内容方法
Jun 23 Python
python实现的MySQL增删改查操作实例小结
Dec 19 Python
python配置grpc环境
Jan 01 Python
python pytest进阶之fixture详解
Jun 27 Python
django中SMTP发送邮件配置详解
Jul 19 Python
Python+OpenCV实现将图像转换为二进制格式
Jan 09 Python
python实现银行实战系统
Feb 26 Python
python读取配置文件方式(ini、yaml、xml)
Apr 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
在IIS上安装PHP4.0正式版
2006/10/09 PHP
PHP的Yii框架中行为的定义与绑定方法讲解
2016/03/18 PHP
Yii2实现自定义独立验证器的方法
2017/05/05 PHP
Laravel5.0+框架邮件发送功能实现方法图文与实例详解
2019/04/23 PHP
php7性能提升的原因详解
2019/10/13 PHP
DOM_window对象属性之--clipboardData对象操作代码
2011/02/03 Javascript
js中通过split函数分割字符串成数组小例子
2013/09/21 Javascript
js获取多个tagname的节点数组
2013/09/22 Javascript
JavaScript 实现打印,打印预览,打印设置
2014/12/30 Javascript
JavaScript中关联原型链属性特性
2016/02/13 Javascript
nodejs读写json文件的简单方法(必看)
2017/03/09 NodeJs
Jquery-data的三种用法
2017/04/18 jQuery
十大 Node.js 的 Web 框架(快速提升工作效率)
2017/06/30 Javascript
JavaScript 数组的进化与性能分析
2017/09/18 Javascript
js表单序列化判断空值的实例
2017/09/22 Javascript
angular中ui calendar的一些使用心得(推荐)
2017/11/03 Javascript
webpack手动配置React开发环境的步骤
2018/07/02 Javascript
vue项目中使用scss的方法步骤
2019/05/16 Javascript
JS图片懒加载的优点及实现原理
2020/01/10 Javascript
Vue.js仿Select下拉框效果
2020/02/18 Javascript
微信小程序实现身份证取景框拍摄
2020/09/09 Javascript
详解vue中使用transition和animation的实例代码
2020/12/12 Vue.js
Python continue继续循环用法总结
2018/06/10 Python
Tensorflow实现神经网络拟合线性回归
2019/07/19 Python
python3.8下载及安装步骤详解
2020/01/15 Python
Python3如何在Windows和Linux上打包
2020/02/25 Python
Python中常见的数制转换有哪些
2020/05/27 Python
CSS3 中filter(滤镜)属性使用详解
2020/04/07 HTML / CSS
监理资料员岗位职责
2014/01/03 职场文书
企业元宵节主持词
2014/03/25 职场文书
大学生迟到检讨书500字
2014/10/17 职场文书
2014年作风建设工作总结
2014/10/29 职场文书
2015年先进个人自荐书
2015/03/24 职场文书
工程部岗位职责范本
2015/04/11 职场文书
幼儿园教师师德承诺书
2015/04/28 职场文书
民间借贷借条如何写
2015/05/26 职场文书