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实现简单的TCP代理服务器
Oct 08 Python
使用Python编写简单网络爬虫抓取视频下载资源
Nov 04 Python
python使用any判断一个对象是否为空的方法
Nov 19 Python
python获取各操作系统硬件信息的方法
Jun 03 Python
windows下python安装paramiko模块和pycrypto模块(简单三步)
Jul 06 Python
Python根据指定日期计算后n天,前n天是哪一天的方法
May 29 Python
python面向对象法实现图书管理系统
Apr 19 Python
Python matplotlib以日期为x轴作图代码实例
Nov 22 Python
Python实现AI换脸功能
Apr 10 Python
在django中form的label和verbose name的区别说明
May 20 Python
python如何求圆的面积
Jul 01 Python
Python编写万花尺图案实例
Jan 03 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 5.3.1 安装包 VC9 VC6不同版本的区别是什么
2010/07/04 PHP
浅析PHP中Session可能会引起并发问题
2015/07/23 PHP
学习php设计模式 php实现装饰器模式(decorator)
2015/12/07 PHP
PHP Filter过滤器全面解析
2016/08/09 PHP
php版微信发红包接口用法示例
2016/09/23 PHP
PHP判断函数是否被定义的方法
2019/06/21 PHP
laravel 解决后端无法获取到前端Post过来的值问题
2019/10/22 PHP
Nigma vs AM BO3 第一场2.13
2021/03/10 DOTA
NodeJs中的非阻塞方法介绍
2012/06/05 NodeJs
键盘KeyCode值列表汇总
2013/11/26 Javascript
轻松创建nodejs服务器(4):路由
2014/12/18 NodeJs
js实现用户离开页面前提示是否离开此页面的方法(包括浏览器按钮事件)
2015/07/18 Javascript
原生js实现addClass,removeClass,hasClass方法
2016/04/27 Javascript
文本框只能输入数字的实现方法(兼容IE火狐)
2016/06/25 Javascript
vuejs在解析时出现闪烁的原因及防止闪烁的方法
2016/09/19 Javascript
JQuery PHP图片在线裁剪实例
2020/07/27 Javascript
简单实现Bootstrap标签页
2020/08/09 Javascript
JS实现数组去重及数组内对象去重功能示例
2019/02/02 Javascript
js实现简单的日历显示效果函数示例
2019/11/25 Javascript
在vue中使用axios实现post方式获取二进制流下载文件(实例代码)
2019/12/16 Javascript
从零学Python之入门(三)序列
2014/05/25 Python
python实现数组插入新元素的方法
2015/05/22 Python
让Python代码更快运行的5种方法
2015/06/21 Python
基于进程内通讯的python聊天室实现方法
2015/06/28 Python
对Python 内建函数和保留字详解
2018/10/15 Python
Python Django切换MySQL数据库实例详解
2019/07/16 Python
Numpy ndarray 多维数组对象的使用
2021/02/10 Python
BASIC HOUSE官方旗舰店:韩国著名的服装品牌
2018/09/27 全球购物
护理毕业生自荐信范文
2013/12/22 职场文书
教师个人剖析材料
2014/02/05 职场文书
工作会议主持词
2014/03/17 职场文书
党的群众路线学习材料
2014/05/16 职场文书
幼儿生日活动方案
2014/08/27 职场文书
房屋维修申请报告
2015/05/18 职场文书
子女赡养老人协议书
2016/03/23 职场文书
JavaScript 对象创建的3种方法
2021/11/17 Javascript