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操作列表的常用方法分享
Feb 13 Python
利用ctypes提高Python的执行速度
Sep 09 Python
python编写分类决策树的代码
Dec 21 Python
python2.7安装图文教程
Mar 13 Python
在Python中输入一个以空格为间隔的数组方法
Nov 13 Python
对python中的乘法dot和对应分量相乘multiply详解
Nov 14 Python
Python3实现腾讯云OCR识别
Nov 27 Python
python实现简单flappy bird
Dec 24 Python
python 爬虫百度地图的信息界面的实现方法
Oct 27 Python
tensorflow 重置/清除计算图的实现
Jan 19 Python
Python如何定义有默认参数的函数
Aug 10 Python
Pandas的数据过滤实现
Jan 15 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 加密解密内部算法
2010/04/22 PHP
php利用腾讯ip分享计划获取地理位置示例分享
2014/01/20 PHP
php实现简单爬虫的开发
2016/03/28 PHP
按钮JS复制文本框和表格的代码
2011/04/01 Javascript
使用Js让Html中特殊字符不被转义
2013/11/05 Javascript
javascript中的原型链深入理解
2014/02/24 Javascript
javascript中的正则表达式使用详解
2015/08/30 Javascript
javascript跨域总结之window.name实现的跨域数据传输
2015/11/01 Javascript
分享两款带遮罩的jQuery弹出框
2015/12/30 Javascript
jquery设置表单元素为不可用的简单代码
2016/07/04 Javascript
Express使用html模板的详细代码
2017/09/18 Javascript
webpack配置之后端渲染详解
2017/10/26 Javascript
详解JavaScript中的数组合并方法和对象合并方法
2018/05/11 Javascript
解决Angular4项目部署到服务器上刷新404的问题
2018/08/31 Javascript
JavaScript JSON数据处理全集(小结)
2019/08/15 Javascript
js实现简单掷骰子小游戏
2019/10/24 Javascript
Vue 事件的$event参数=事件的值案例
2021/01/29 Vue.js
Django Admin实现上传图片校验功能
2016/03/06 Python
解决python3读取Python2存储的pickle文件问题
2018/10/25 Python
老生常谈python中的重载
2018/11/11 Python
Python一键查找iOS项目中未使用的图片、音频、视频资源
2019/08/12 Python
python3的数据类型及数据类型转换实例详解
2019/08/20 Python
python实现图片插入文字
2019/11/26 Python
使用python3批量下载rbsp数据的示例代码
2019/12/20 Python
python pandas利用fillna方法实现部分自动填充功能
2020/03/16 Python
Python离线安装各种库及pip的方法
2020/11/28 Python
应届生服装设计自我评价
2013/09/20 职场文书
自荐书范文
2013/12/08 职场文书
小学生操行评语
2014/04/22 职场文书
党的群众路线对照检查材料范文
2014/09/24 职场文书
省委召开党的群众路线教育实践活动总结大会报告
2014/10/21 职场文书
行政处罚听证告知书
2015/07/01 职场文书
nginx处理http请求实现过程解析
2021/03/31 Servers
详解MySQL数据库千万级数据查询和存储
2021/05/18 MySQL
详解redis在微服务领域的贡献
2021/10/16 Redis
公历12个月名称的由来
2022/04/12 杂记