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 06 Python
python中使用OpenCV进行人脸检测的例子
Apr 18 Python
python实现删除文件与目录的方法
Nov 10 Python
python 垃圾收集机制的实例详解
Aug 20 Python
python实现图片筛选程序
Oct 24 Python
解决pycharm回车之后不能换行或不能缩进的问题
Jan 16 Python
python3实现指定目录下文件sha256及文件大小统计
Feb 25 Python
Python 一键获取百度网盘提取码的方法
Aug 01 Python
python基于json文件实现的gearman任务自动重启代码实例
Aug 13 Python
Linux系统下升级pip的完整步骤
Jan 31 Python
Python matplotlib多个子图绘制整合
Apr 13 Python
Python实现将多张图片合成MP4视频并加入背景音乐
Apr 28 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的输入输出流
2007/02/14 PHP
php字符串截取函数用法分析
2014/11/25 PHP
微信 getAccessToken方法详解及实例
2016/11/23 PHP
Ecshop 后台添加新功能栏目及管理权限设置教程
2017/11/21 PHP
javascript 动态调整图片尺寸实现代码
2009/12/28 Javascript
JavaScript经典效果集锦
2010/07/06 Javascript
jquery乱码与contentType属性设置问题解决方案
2013/01/07 Javascript
avalon js实现仿google plus图片多张拖动排序附源码下载
2015/09/24 Javascript
详解浏览器渲染页面过程
2017/02/09 Javascript
jquery实现页面加载效果
2017/02/21 Javascript
Vue通过input筛选数据
2020/10/26 Javascript
webpack学习--webpack经典7分钟入门教程
2017/06/28 Javascript
纯js实现画一棵树的示例
2017/09/05 Javascript
详解Node全局变量global模块
2017/09/28 Javascript
写给小白看的JavaScript异步
2017/11/29 Javascript
利用adb shell和node.js实现抖音自动抢红包功能(推荐)
2018/02/22 Javascript
微信小程序scroll-view仿拼多多横向滑动滚动条
2020/04/21 Javascript
对vue下点击事件传参和不传参的区别详解
2018/09/15 Javascript
基于JavaScript实现每日签到打卡轨迹功能
2018/11/29 Javascript
在layui下对元素进行事件绑定的实例
2019/09/06 Javascript
[02:31]2014DOTA2国际邀请赛2009专访:干爹表现出乎意料 看好DK杀回决赛
2014/07/20 DOTA
python 列表降维的实例讲解
2018/06/28 Python
基于python解线性矩阵方程(numpy中的matrix类)
2019/10/21 Python
Python基于DB-API操作MySQL数据库过程解析
2020/04/23 Python
Pytest如何使用skip跳过执行测试
2020/08/13 Python
Ubuntu配置Pytorch on Graph (PoG)环境过程图解
2020/11/19 Python
REISS英国官网:伦敦High Street最受欢迎品牌
2016/12/21 全球购物
Perfume’s Club美国官网:西班牙第一家在线美容店
2020/06/10 全球购物
校园会短篇的广播稿
2014/10/21 职场文书
员工升职自荐信
2015/03/27 职场文书
2015年实习班主任工作总结
2015/04/23 职场文书
2015年初三班主任工作总结
2015/05/21 职场文书
幸福来敲门观后感
2015/06/04 职场文书
2016年基层党支部书记公开承诺书
2016/03/25 职场文书
导游词之阳朔遇龙河
2019/12/16 职场文书
MySQL 数据库范式化设计理论
2022/04/22 MySQL