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 面向对象 成员的访问约束
Dec 23 Python
python生成器的使用方法
Nov 21 Python
python实现爬虫下载漫画示例
Feb 16 Python
Python操作sqlite3快速、安全插入数据(防注入)的实例
Apr 26 Python
Python实现基于权重的随机数2种方法
Apr 28 Python
Python xlrd读取excel日期类型的2种方法
Apr 28 Python
python使用MySQLdb访问mysql数据库的方法
Aug 03 Python
python之PyMongo使用总结
May 26 Python
python 数据的清理行为实例详解
Jul 12 Python
Python pymongo模块常用操作分析
Sep 01 Python
Python通过for循环理解迭代器和生成器实例详解
Feb 16 Python
python向字符串中添加元素的实例方法
Jun 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下删除字符串中HTML标签的函数
2008/08/27 PHP
memcache命令启动参数中文解释
2014/01/13 PHP
用 Composer构建自己的 PHP 框架之基础准备
2014/10/30 PHP
php实现用于验证所有类型的信用卡类
2015/03/24 PHP
PHP基于imagick扩展实现合成图片的两种方法【附imagick扩展下载】
2017/11/14 PHP
PHP压缩图片功能的介绍
2019/03/21 PHP
如何在Laravel5.8中正确地应用Repository设计模式
2019/11/26 PHP
JS日期和时间选择控件升级版(自写)
2013/08/02 Javascript
js构造函数、索引数组和属性的实现方式和使用
2014/11/16 Javascript
nodejs中实现sleep功能实例
2015/03/24 NodeJs
JS动态增删表格行的方法
2016/03/03 Javascript
WEB 前端开发中防治重复提交的实现方法
2016/10/26 Javascript
基于jQuery实现瀑布流页面
2017/04/11 jQuery
Vue.js如何实现路由懒加载浅析
2017/08/14 Javascript
详解react-router4 异步加载路由两种方法
2017/09/12 Javascript
php中and 和 &&出坑指南
2018/07/13 Javascript
JavaScript格式化json和xml的方法示例
2019/01/22 Javascript
vue实现信息管理系统
2020/05/30 Javascript
vue cli 3.0通用打包配置代码,不分一二级目录
2020/09/02 Javascript
[01:57]2016完美“圣”典风云人物:国士无双专访
2016/12/04 DOTA
详解Django中的权限和组以及消息
2015/07/23 Python
详细介绍Python的鸭子类型
2016/09/12 Python
Python 爬虫多线程详解及实例代码
2016/10/08 Python
对Python 窗体(tkinter)文本编辑器(Text)详解
2018/10/11 Python
对Python的交互模式和直接运行.py文件的区别详解
2019/06/29 Python
CSS3 Media Queries(响应式布局可以让你定制不同的分辨率和设备)
2013/06/06 HTML / CSS
英国伦敦的睡衣品牌:Asceno
2019/10/06 全球购物
俄语地区最大的中国商品在线购物网站之一:Umka Mall
2019/11/03 全球购物
医院护士专业个人的求职信
2013/12/09 职场文书
房地产项目策划书
2014/02/05 职场文书
2016新年年会主持词
2015/07/06 职场文书
初中班级口号霸气押韵
2015/12/24 职场文书
2016年师德学习心得体会
2016/01/12 职场文书
教师听课学习心得体会
2016/01/15 职场文书
springboot用户数据修改的详细实现
2022/04/06 Java/Android
MySQL详解进行JDBC编程与增删改查方法
2022/06/16 MySQL