Python ConfigParser模块的使用示例


Posted in Python onOctober 12, 2020

前言

在做项目的时候一些配置文件都会写在settings配置文件中,今天在研究"州的先生"开源文档写作系统-MrDoc的时候,发现部分配置文件写在config.ini中,并利用configparser进行相关配置文件的读取及修改。

一、ConfigParser模块简介

该模块适用于配置文件的格式与windows ini文件类似,是用来读取配置文件的包。配置文件的格式如下:中括号“[ ]”内包含的为section。section 下面为类似于key-value 的配置内容。格式如下:

[DEFAULT]
ServerAliveInterval = 45
Compression = yes
CompressionLevel = 9
ForwardX11 = yes
[bitbucket.org]
User = Atlan
[topsecret.server.com]
Port = 50022
ForwardX11 = no

括号“[ ]”内包含的为section。紧接着section 为类似于key-value 的options 的配置内容。

二、ConfigParser模块使用

1.写入操作

代码如下:

import configparser #引入模块
​
config = configparser.ConfigParser()  #类中一个方法 #实例化一个对象
​
config["DEFAULT"] = {'ServerAliveInterval': '45',
           'Compression': 'yes',
           'CompressionLevel': '9',
           'ForwardX11':'yes'
           } #类似于操作字典的形式
​
config['bitbucket.org'] = {'User':'Atlan'} #类似于操作字典的形式
​
config['topsecret.server.com'] = {'Host Port':'50022','ForwardX11':'no'}
​
with open('example.ini', 'w') as configfile:
​
  config.write(configfile) #将对象写入文件
以上代码做个简单的解释,和字典的操作方式相比,configparser模块的操作方式,无非是在实例化的对象后面,跟一个section,在紧跟着设置section的属性(类似字典的形式)
 
config["DEFAULT"] = {'ServerAliveInterval': '45',
           'Compression': 'yes',
           'CompressionLevel': '9',
           'ForwardX11':'yes'
           } #类似于操作字典的形式
#config后面跟的是一个section的名字,section的段的内容的创建类似于创建字典。类似与字典当然还有别的操作方式啦!
config['bitbucket.org'] = {'User':'Atlan'} #类似于最经典的字典操作方式

2.读取操作

import configparser
config = configparser.ConfigParser()
#---------------------------查找文件内容,基于字典的形式
print(config.sections())    # []
config.read('example.ini',encoding='utf-8')
print(config.sections())    #  ['bitbucket.org', 'topsecret.server.com']
print('bytebong.com' in config) # False
print('bitbucket.org' in config) # True
print('DEFAULT' in config) # True
print(config['bitbucket.org']["user"]) # Atlan
​
print(config['DEFAULT']['Compression']) #yes
print(config['topsecret.server.com']['ForwardX11']) #no
​
print(config['bitbucket.org'])     #<Section: bitbucket.org>
for key in config['bitbucket.org']:   # 注意,有default会默认default的键
  print(key)             #user serveraliveinterval compression compressionlevel forwardx11
​
# 同for循环,找到'bitbucket.org'下所有键 ['user', 'serveraliveinterval', 'compression', 'compressionlevel', 'forwardx11']
print(config.options('bitbucket.org')) 
​
print(config.items('bitbucket.org'))  #找到'bitbucket.org'下所有键值对 [('serveraliveinterval', '45'), ('compression', 'yes'), ('compressionlevel', '9'), ('forwardx11', 'yes'), ('user', 'Atlan')]
​
print(config.get('bitbucket.org','compression')) # yes    get方法Section下的key对应的value
print(config.getboolean('bitbucket.org','compression')) # True

3.修改操作

import configparser
​
config = configparser.ConfigParser()
​
config.read('example.ini',encoding='utf-8') #读文件
​
config.add_section('yuan') #添加section
​
config.remove_section('bitbucket.org') #删除section
config.remove_option('topsecret.server.com',"forwardx11") #删除一个配置项
# 修改某个option的值,如果不存在该option 则会创建
config.set('topsecret.server.com','k1','11111')
config.set('yuan','k2','22222')
#写回文件
config.write(open("example.ini", "w"))
# 写到其他文件
with open('new2.ini','w') as f:
   config.write(f)

以上就是Python ConfigParser模块的使用示例的详细内容,更多关于Python ConfigParser模块的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
Python中编写ORM框架的入门指引
Apr 29 Python
用Python操作字符串之rindex()方法的使用
May 19 Python
python调用fortran模块
Apr 08 Python
Python subprocess模块功能与常见用法实例详解
Jun 28 Python
使用python采集脚本之家电子书资源并自动下载到本地的实例脚本
Oct 23 Python
Python爬虫实现获取动态gif格式搞笑图片的方法示例
Dec 24 Python
使用python获取(宜宾市地震信息)地震信息
Jun 20 Python
tensorboard显示空白的解决
Feb 15 Python
Python新手学习装饰器
Jun 04 Python
Python利用pip安装tar.gz格式的离线资源包
Sep 14 Python
python实现自定义日志的具体方法
May 28 Python
Python学习之异常中的finally使用详解
Mar 16 Python
python修改微信和支付宝步数的示例代码
Oct 12 #Python
教你如何用python操作摄像头以及对视频流的处理
Oct 12 #Python
Django限制API访问频率常用方法解析
Oct 12 #Python
Python confluent kafka客户端配置kerberos认证流程详解
Oct 12 #Python
Django如何使用asyncio协程和ThreadPoolExecutor多线程
Oct 12 #Python
使用Python中tkinter库简单gui界面制作及打包成exe的操作方法(二)
Oct 12 #Python
使用Python将xmind脑图转成excel用例的实现代码(一)
Oct 12 #Python
You might like
php通过数组实现多条件查询实现方法(字符串分割)
2014/05/06 PHP
WordPress主题中添加文章列表页页码导航的PHP代码实例
2015/12/22 PHP
php分页原理 分页代码 分页类制作教程
2016/09/23 PHP
php生成无限栏目树
2017/03/16 PHP
FireFox中textNode分片的问题
2007/04/10 Javascript
jquery方法+js一般方法+js面向对象方法实现拖拽效果
2012/08/30 Javascript
Javascript跨域请求的4种解决方式
2013/03/17 Javascript
jQuery操作表格(table)的常用方法、技巧汇总
2014/04/12 Javascript
jquery插件qrcode在线生成二维码
2015/04/26 Javascript
js实现简单排列组合的方法
2016/01/27 Javascript
Angular的Bootstrap(引导)和Compiler(编译)机制
2016/06/20 Javascript
AngularJS 仿微信图片手势缩放的实例
2017/09/28 Javascript
vue+axios+mock.js环境搭建的方法步骤
2018/08/28 Javascript
NodeJs 模仿SIP话机注册的方法
2019/06/21 NodeJs
微信小程序如何调用json数据接口并解析
2019/06/29 Javascript
layer设置maxWidth及maxHeight解决方案
2019/07/26 Javascript
[02:26]2018DOTA2亚洲邀请赛赛前采访-Newbee篇
2018/04/03 DOTA
[46:59]完美世界DOTA2联赛PWL S2 GXR vs Ink 第二场 11.19
2020/11/20 DOTA
python迭代器实例简析
2014/09/25 Python
Python中一些自然语言工具的使用的入门教程
2015/04/13 Python
Python方法的延迟加载的示例代码
2017/12/18 Python
Anaconda下配置python+opencv+contribx的实例讲解
2018/08/06 Python
pyinstaller打包单个exe后无法执行错误的解决方法
2019/06/21 Python
详解在python操作数据库中游标的使用方法
2019/11/12 Python
Django ORM 查询表中某列字段值的方法
2020/04/30 Python
Python经纬度坐标转换为距离及角度的实现
2020/11/01 Python
Python基于Serializer实现字段验证及序列化
2020/11/04 Python
HTML5 Canvas的性能提高技巧经验分享
2013/07/02 HTML / CSS
canvas实现扭蛋机动画效果的示例代码
2018/10/17 HTML / CSS
Nebula美国官网:便携式投影仪
2019/03/15 全球购物
演讲比赛策划方案
2014/06/11 职场文书
党支部活动策划方案
2014/08/18 职场文书
党员剖析材料范文
2014/09/30 职场文书
大学生实习介绍信
2015/05/05 职场文书
正能量励志演讲稿三分钟(范文)
2019/07/11 职场文书
Redis keys命令的具体使用
2022/06/05 Redis