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 + hadoop streaming 分布式编程(一) -- 原理介绍,样例程序与本地调试
Jul 14 Python
Python抽象类的新写法
Jun 18 Python
解决pip install的时候报错timed out的问题
Jun 12 Python
Python使用分布式锁的代码演示示例
Jul 30 Python
Python异常处理操作实例详解
Aug 28 Python
Python3.5面向对象与继承图文实例详解
Apr 24 Python
python处理document文档保留原样式
Sep 23 Python
python的命名规则知识点总结
Oct 04 Python
18个Python脚本可加速你的编码速度(提示和技巧)
Oct 17 Python
Python是什么 Python的用处
May 26 Python
获取CSDN文章内容并转换为markdown文本的python
Sep 06 Python
Python字典的基础操作
Nov 01 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+oracle 分页类
2006/10/09 PHP
PHP 危险函数解释 分析
2009/04/22 PHP
PHP Curl出现403错误的解决办法
2014/05/29 PHP
PDO操作MySQL的基础教程(推荐)
2017/08/18 PHP
php 多继承的几种常见实现方法示例
2019/11/18 PHP
JQuery困惑—包装集 DOM节点
2009/10/16 Javascript
js 无提示关闭浏览器页面的代码
2010/03/09 Javascript
ejs v9 javascript模板系统
2012/03/21 Javascript
A标签触发onclick事件而不跳转的多种解决方法
2013/06/27 Javascript
jquery的ajax和getJson跨域获取json数据的实现方法
2014/02/04 Javascript
让jQuery Mobile不显示讨厌loading界面的方法
2014/02/19 Javascript
js文件Cookie存取值示例代码
2014/02/20 Javascript
jQuery 复合选择器应用的几个例子
2014/09/11 Javascript
jQuery简单实现仿京东商城的左侧菜单效果代码
2015/09/09 Javascript
js仿搜狐视频记录片列表展示效果
2020/05/30 Javascript
微信扫码支付零云插件版实例详解
2017/04/26 Javascript
微信小程序 action-sheet 反馈上拉菜单简单实例
2017/05/11 Javascript
jQuery扩展_动力节点Java学院整理
2017/07/05 jQuery
使用vue实现多规格选择实例(SKU)
2019/08/23 Javascript
JavaScript构造函数原理及实现流程解析
2020/11/19 Javascript
[02:38]2018DOTA2亚洲邀请赛赛前采访-VGJ.T
2018/04/03 DOTA
在漏洞利用Python代码真的很爽
2007/08/26 Python
Python的装饰器用法学习笔记
2016/06/24 Python
Python3 使用cookiejar管理cookie的方法
2018/12/28 Python
python将控制台输出保存至文件的方法
2019/01/07 Python
在Python中append以及extend返回None的例子
2019/07/20 Python
Python实现把多维数组展开成DataFrame
2019/11/30 Python
Tory Burch美国官方网站:美国时尚生活品牌
2016/08/01 全球购物
美国最佳在线航班预订网站:LookupFare
2019/03/26 全球购物
2014年应届大学生自我评价
2014/01/09 职场文书
幼儿园数学教学反思
2014/02/02 职场文书
新学期国旗下演讲稿
2014/05/08 职场文书
2014年酒店前台工作总结
2014/11/14 职场文书
2015年个人自我剖析材料
2014/12/29 职场文书
紫日观后感
2015/06/05 职场文书
《多彩的民间艺术》教学反思
2016/02/16 职场文书