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中下划线的使用方法
Mar 27 Python
python字符串中的单双引
Feb 16 Python
TensorFlow实现RNN循环神经网络
Feb 28 Python
pandas string转dataframe的方法
Apr 11 Python
python使用mitmproxy抓取浏览器请求的方法
Jul 02 Python
python获取txt文件词向量过程详解
Jul 05 Python
django项目中使用手机号登录的实例代码
Aug 15 Python
Pytorch加载部分预训练模型的参数实例
Aug 18 Python
django框架单表操作之增删改实例分析
Dec 16 Python
在Python中利用pickle保存变量的实例
Dec 30 Python
Python函数生成器原理及使用详解
Mar 12 Python
正确的理解和使用Django信号(Signals)
Apr 14 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
关于Zend Studio 配色方案插件的介绍
2013/06/24 PHP
解决php接收shell返回的结果中文乱码问题
2014/01/23 PHP
PHP获取文件的MD5值并判断是否被修改的例子
2014/06/19 PHP
Laravel框架数据库CURD操作、连贯操作总结
2014/09/03 PHP
PHP实现图片旋转效果实例代码
2014/10/01 PHP
php使用cookie显示用户上次访问网站日期的方法
2015/01/26 PHP
详解PHP实现定时任务的五种方法
2016/07/25 PHP
Web版彷 Visual Studio 2003 颜色选择器
2007/01/09 Javascript
jQuery的运行机制和设计理念分析
2011/04/05 Javascript
jquery插件制作 图片走廊 gallery
2012/08/17 Javascript
二叉树的非递归后序遍历算法实例详解
2014/02/07 Javascript
javascript如何判断输入的url是否正确
2014/04/11 Javascript
Node.js文件操作详解
2014/08/16 Javascript
JavaScript实现文字与图片拖拽效果的方法
2015/02/16 Javascript
JS如何判断是否为ie浏览器的方法(包括IE10、IE11在内)
2015/12/13 Javascript
原生js实现无缝轮播图效果
2017/01/11 Javascript
EasyUI为Numberbox添加blur事件的方法
2017/03/05 Javascript
JS实现数组按升序及降序排列的方法
2017/04/26 Javascript
Nodejs--post的公式详解
2017/04/29 NodeJs
BootStrap模态框闪退问题实例代码详解
2018/12/10 Javascript
JavaScript组合模式---引入案例分析
2020/05/23 Javascript
Javascript实现鼠标移入方向感知
2020/06/24 Javascript
antd Form组件方法getFieldsValue获取自定义组件的值操作
2020/10/29 Javascript
Python基于滑动平均思想实现缺失数据填充的方法
2019/02/21 Python
Python3的高阶函数map,reduce,filter的示例详解
2019/07/23 Python
使用Python测试Ping主机IP和某端口是否开放的实例
2019/12/17 Python
Jupyter notebook 远程配置及SSL加密教程
2020/04/14 Python
智能家居、吸尘器、滑板车、电动自行车网上购物:Geekmaxi
2021/01/18 全球购物
FirstCry阿联酋儿童和婴儿产品网上购物:FirstCry.ae
2021/02/22 全球购物
介绍一下gcc特性
2012/01/20 面试题
资金主管岗位职责范本
2014/03/04 职场文书
捐献物资倡议书范文
2014/05/19 职场文书
成都人事代理协议书
2014/10/25 职场文书
民事申诉状范本
2015/05/20 职场文书
工作简报格式范文
2015/07/21 职场文书
调解协议书范本
2016/03/21 职场文书