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中使用urllib2伪造HTTP报头的2个方法
Jul 07 Python
全面了解Python环境配置及项目建立
Jun 30 Python
Python用模块pytz来转换时区
Aug 19 Python
Python 装饰器使用详解
Jul 29 Python
利用python GDAL库读写geotiff格式的遥感影像方法
Nov 29 Python
Python中栈、队列与优先级队列的实现方法
Jun 30 Python
提升python处理速度原理及方法实例
Dec 25 Python
Python实现遗传算法(二进制编码)求函数最优值方式
Feb 11 Python
python中68个内置函数的总结与介绍
Feb 24 Python
高考考python编程是真的吗
Jul 20 Python
matplotlib制作雷达图报错ValueError的实现
Jan 05 Python
Keras保存模型并载入模型继续训练的实现
Feb 20 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计算页面执行时间的实现代码
2013/06/18 PHP
PHP生成随机数的方法实例分析
2015/01/22 PHP
在WordPress中使用wp_count_posts函数来统计文章数量
2016/01/05 PHP
PHP MVC框架skymvc支持多文件上传
2016/05/26 PHP
PHP实现将MySQL重复ID二维数组重组为三维数组的方法
2016/08/01 PHP
利用PHP访问MySql数据库的逻辑操作以及增删改查的实例讲解
2017/08/30 PHP
laravel migrate初学常见错误的解决方法
2017/10/11 PHP
php表单处理操作
2017/11/16 PHP
合并table相同单元格的jquery插件分享(很精简)
2011/06/20 Javascript
非主流的textarea自增长实现js代码
2011/12/20 Javascript
使用js实现一个可编辑的select下拉列表
2014/02/20 Javascript
jQuery选择器源码解读(六):Sizzle选择器匹配逻辑分析
2015/03/31 Javascript
JavaScript 事件入门知识
2015/04/13 Javascript
基于canvas实现的钟摆效果完整实例
2016/01/26 Javascript
详解Wondows下Node.js使用MongoDB的环境配置
2016/03/01 Javascript
Javascript基础学习笔记(菜鸟必看篇)
2016/07/22 Javascript
总结Javascript中数组各种去重的方法
2016/10/04 Javascript
js实现前端分页页码管理
2017/01/06 Javascript
JavaScript 函数的定义-调用、注意事项
2017/04/16 Javascript
Vuex之理解Mutations的用法实例
2017/04/19 Javascript
vue+element实现表单校验功能
2019/05/20 Javascript
基于vue hash模式微信分享#号的解决
2020/09/07 Javascript
vue实现两个组件之间数据共享和修改操作
2020/11/12 Javascript
[52:27]2018DOTA2亚洲邀请赛 3.31 小组赛B组 paiN vs Secret
2018/04/01 DOTA
设计模式中的原型模式在Python程序中的应用示例
2016/03/02 Python
python构建基础的爬虫教学
2018/12/23 Python
图文详解python安装Scrapy框架步骤
2019/05/20 Python
浅谈Python中threading join和setDaemon用法及区别说明
2020/05/02 Python
斯德哥尔摩通票:Stockholm Pass
2018/01/09 全球购物
印度在线购物网站:Paytmmall
2019/07/24 全球购物
师范生自我鉴定范文
2013/10/05 职场文书
国家励志奖学金个人先进事迹材料
2014/05/04 职场文书
信访工作经验交流材料
2014/05/23 职场文书
党支部书记四风问题整改措施
2014/09/24 职场文书
2014向国旗敬礼网上签名活动总结
2014/09/27 职场文书
毕业设计工作总结
2015/08/14 职场文书