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中字典和JSON互转操作实例
Jan 19 Python
简单理解Python中的装饰器
Jul 31 Python
Python实现模拟时钟代码推荐
Nov 08 Python
Python中扩展包的安装方法详解
Jun 14 Python
python实现八大排序算法(1)
Sep 14 Python
浅谈pytorch和Numpy的区别以及相互转换方法
Jul 26 Python
PyQt5响应回车事件的方法
Jun 25 Python
在python image 中安装中文字体的实现方法
Aug 22 Python
Python tkinter实现简单加法计算器代码实例
May 13 Python
如何利用pycharm进行代码更新比较
Nov 04 Python
C站最全Python标准库总结,你想要的都在这里
Jul 03 Python
C3 线性化算法与 MRO之Python中的多继承
Oct 05 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实现分页显示
2015/11/03 PHP
PHPStrom 新建FTP项目以及在线操作教程
2016/10/16 PHP
PHP面向对象程序设计子类扩展父类(子类重新载入父类)操作详解
2019/06/14 PHP
php的lavarel框架中join和orWhere的用法
2020/12/28 PHP
用js实现下载远程文件并保存在本地的脚本
2008/05/06 Javascript
jQuery数组处理代码详解(含实例演示)
2012/02/03 Javascript
如何让你的Lightbox支持滚轮缩放及Base64图片
2014/12/04 Javascript
Redis基本知识、安装、部署、配置笔记
2015/03/05 Javascript
JavaScript实现自动生成网页元素功能(按钮、文本等)
2015/11/21 Javascript
js数组的五种迭代方法及两种归并方法(推荐)
2016/06/14 Javascript
基于JavaScript实现在新的tab页打开url
2016/08/04 Javascript
AngularJS学习第二篇 AngularJS依赖注入
2017/02/13 Javascript
详解VueJs前后端分离跨域问题
2017/05/24 Javascript
JS闭包的几种常见形式实例详解
2017/09/16 Javascript
基于vue-resource jsonp跨域问题的解决方法
2018/02/03 Javascript
Angular.JS读取数据库数据调用完整实例
2019/07/02 Javascript
Javascript 对象(object)合并操作实例分析
2019/07/30 Javascript
微信小程序点击顶部导航栏切换样式代码实例
2019/11/12 Javascript
jQuery插件simplePagination的使用方法示例
2020/04/28 jQuery
[02:38]DOTA2亚洲邀请赛小组赛精彩集锦:Wings完美团击溃对手
2017/03/29 DOTA
[34:39]Secret vs VG 2018国际邀请赛淘汰赛BO3 第二场 8.23
2018/08/24 DOTA
Python 匹配任意字符(包括换行符)的正则表达式写法
2009/10/29 Python
python制作爬虫爬取京东商品评论教程
2016/12/16 Python
200行自定义python异步非阻塞Web框架
2017/03/15 Python
理解Python中的绝对路径和相对路径
2017/08/30 Python
python不换行之end=与逗号的意思及用途
2017/11/21 Python
Python使用selenium实现网页用户名 密码 验证码自动登录功能
2018/05/16 Python
Python文件读写保存操作的示例代码
2018/09/14 Python
Python zip函数打包元素实例解析
2019/12/11 Python
使用keras实现densenet和Xception的模型融合
2020/05/23 Python
Python并发请求下限制QPS(每秒查询率)的实现代码
2020/06/05 Python
CSS中越界问题的经典解决方案【推荐】
2016/04/19 HTML / CSS
世界上最大的乐器零售商:Guitar Center
2017/11/07 全球购物
会计学专业自荐信
2014/06/25 职场文书
企业爱岗敬业演讲稿
2014/09/04 职场文书
服装区域经理岗位职责
2015/04/10 职场文书