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数据类型详解(三)元祖:tuple
May 08 Python
Python制作刷网页流量工具
Apr 23 Python
python 中split 和 strip的实例详解
Jul 12 Python
K-means聚类算法介绍与利用python实现的代码示例
Nov 13 Python
详解python上传文件和字符到PHP服务器
Nov 24 Python
Python排序搜索基本算法之冒泡排序实例分析
Dec 09 Python
python实现指定文件夹下的指定文件移动到指定位置
Sep 17 Python
Python读取excel指定列生成指定sql脚本的方法
Nov 28 Python
浅谈Python type的使用
Nov 19 Python
Python Numpy 自然数填充数组的实现
Nov 28 Python
Python:合并两个numpy矩阵的实现
Dec 02 Python
使用OpenCV校准鱼眼镜头的方法
Nov 26 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
pw的一个放后门的方法分析
2007/10/08 PHP
PHP中each与list用法分析
2016/01/08 PHP
php metaphone()函数的定义和用法
2016/05/15 PHP
利用PHP生成静态html页面的原理
2016/09/30 PHP
php封装的mongodb操作类代码
2017/08/06 PHP
Laravel 手动开关 Eloquent 修改器的操作方法
2019/12/30 PHP
js中replace的用法总结
2013/12/27 Javascript
jQuery搜索框效果实现代码(百度关键词联想)
2021/02/25 Javascript
AngularJs Forms详解及简单示例
2016/09/01 Javascript
微信小程序  modal弹框组件详解
2016/10/27 Javascript
JS实现间歇滚动的运动效果实例
2016/12/22 Javascript
Angular工具方法学习
2016/12/26 Javascript
jQuery动态添加元素无法触发绑定事件的解决方法分析
2018/01/02 jQuery
JS扩展String.prototype.format字符串拼接的功能
2018/03/09 Javascript
vue+iview 实现可编辑表格的示例代码
2018/10/31 Javascript
JavaScript常用事件介绍
2019/01/21 Javascript
生产制造追溯系统之在线打印功能
2019/06/03 Javascript
angular8和ngrx8结合使用的步骤介绍
2019/12/01 Javascript
vue 动态表单开发方法案例详解
2019/12/02 Javascript
Vue实现简单的拖拽效果
2020/08/25 Javascript
[02:08]我的刀塔不可能这么可爱 胡晓桃_1
2014/06/20 DOTA
centos6.4下python3.6.1安装教程
2017/07/21 Python
在Django中输出matplotlib生成的图片方法
2018/05/24 Python
浅谈Python中的可迭代对象、迭代器、For循环工作机制、生成器
2019/03/11 Python
Python Numpy库常见用法入门教程
2020/01/16 Python
美国购买当代和现代家具网站:MODTEMPO
2018/07/20 全球购物
来自南加州灵感的工作和娱乐服装:TravisMathew
2019/05/01 全球购物
值传递还是引用传递
2015/02/08 面试题
人事专员岗位职责
2013/11/20 职场文书
信用卡结清证明怎么写
2014/09/13 职场文书
医德医风自我评价
2014/09/19 职场文书
2014办公室年度工作总结
2014/12/09 职场文书
老乡会致辞
2015/07/28 职场文书
公司安全管理制度范本
2015/08/05 职场文书
python如何获取网络数据
2021/04/11 Python
Golang 编译成DLL文件的操作
2021/05/06 Golang