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列表与元组详解实例
Nov 01 Python
python通过wxPython打开一个音频文件并播放的方法
Mar 25 Python
Python使用Scrapy爬取妹子图
May 28 Python
利用Python自带PIL库扩展图片大小给图片加文字描述的方法示例
Aug 08 Python
解决python字典对值(值为列表)赋值出现重复的问题
Jan 20 Python
利用python实现在微信群刷屏的方法
Feb 21 Python
使用python创建生成动态链接库dll的方法
May 09 Python
解决pycharm中的run和debug失效无法点击运行
Jun 09 Python
Python暴力破解Mysql数据的示例
Nov 09 Python
Python 按比例获取样本数据或执行任务的实现代码
Dec 03 Python
pycharm中leetcode插件使用图文详解
Dec 07 Python
python 利用 PIL 将数组值转成图片的实现
Apr 12 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在字符断点处截断文字的实现代码
2011/04/21 PHP
php Smarty初体验二 获取配置信息
2011/08/08 PHP
浅析PHP Socket技术
2013/08/02 PHP
php中实现记住密码下次自动登录的例子
2014/11/06 PHP
PHP实现限制IP访问的方法
2017/04/20 PHP
不用写JS也能使用EXTJS视频演示
2008/12/29 Javascript
jQuery实用基础超详细介绍
2013/04/11 Javascript
JQuery记住用户名和密码的具体实现
2014/04/04 Javascript
nodejs中操作mysql数据库示例
2014/12/20 NodeJs
学习JavaScript编程语言的8张思维导图分享
2015/03/27 Javascript
基于ajax实现文件上传并显示进度条
2015/08/03 Javascript
JS中mouseover和mouseout多次触发问题如何解决
2016/06/06 Javascript
JavaScript必知必会(二) null 和undefined
2016/06/08 Javascript
jQuery validate插件功能与用法详解
2016/12/15 Javascript
vue+moment实现倒计时效果
2019/08/26 Javascript
9种方法优化jQuery代码详解
2020/02/04 jQuery
基于vue.js仿淘宝收货地址并设置默认地址的案例分析
2020/08/20 Javascript
Vue实现图书管理案例
2021/01/20 Vue.js
[02:55]含熏伴清风,风行者至宝、屠夫身心及典藏宝瓶二展示
2020/09/08 DOTA
跟老齐学Python之正规地说一句话
2014/09/28 Python
Python标准库defaultdict模块使用示例
2015/04/28 Python
python实现简单登陆系统
2018/10/18 Python
python运行时强制刷新缓冲区的方法
2019/01/14 Python
python下PyGame的下载与安装过程及遇到问题
2019/08/04 Python
python关于调用函数外的变量实例
2019/12/26 Python
CSS3实现头像旋转效果
2017/03/13 HTML / CSS
不可轻视HTML5!App三年内将被html5顶替彻底消失
2015/11/18 HTML / CSS
杭州-DOTNET笔试题集
2013/09/25 面试题
优秀毕业大学生推荐信
2013/11/13 职场文书
文明教师事迹材料
2014/01/16 职场文书
大学军训感言800字
2014/02/27 职场文书
毕业自我鉴定怎么写
2014/03/25 职场文书
仓库统计员岗位职责
2015/04/14 职场文书
CSS完成视差滚动效果
2021/04/27 HTML / CSS
画错魏国疆域啦!《派对咖孔明》动画因作画失误于官网致歉
2022/04/07 日漫
mysql函数之截取字符串的实现
2022/08/14 MySQL