Python如何使用ConfigParser读取配置文件


Posted in Python onNovember 12, 2020

在项目过程中,需要设置各种IP和端口号信息等,如果每次都在源程序中更改会很麻烦(因为每次都要重启项目重新加载配置信息),因此将需要修改的参数写在配置文件(或者数据库)中,每次只需修改配置文件,就可以实现同样的目的。Python 标准库的 ConfigParser 模块提供一套 API 来读取和操作配置文件。因此在程序开始位置要导入该模块,注意区分是python2还是python3,python3有一些改动

import ConfigParser #python 2.x
import configparser #python 3.x

配置文件的格式

  • a) 配置文件中包含一个或多个 section, 每个 section 有自己的 option;
  • b) section 用 [sect_name] 表示,每个option是一个键值对,使用分隔符 = 或 : 隔开;
  • c) 在 option 分隔符两端的空格会被忽略掉
  • d) 配置文件使用 # 和 ; 注释

一个简单的配置文件样例 config.conf

# database source
[db]   # 对应的是一个section
host = 127.0.0.1  # 对应的是一个option键值对形式
port = 3306
user = root
pass = root
 
# ssh
[ssh]
host = 192.168.10.111
user = sean
pass = sean

ConfigParser 的基本操作

a) 实例化 ConfigParser 并加载配置文件

cp = ConfigParser.SafeConfigParser()
cp.read('config.conf')

b) 获取 section 列表、option 键列表和 option 键值元组列表

print('all sections:', cp.sections()) # sections: ['db', 'ssh']
print('options of [db]:', cp.options('db')) # options of [db]: ['host', 'port', 'user', 'pass']
print('items of [ssh]:', cp.items('ssh')) # items of [ssh]: [('host', '192.168.10.111'), ('user', 'sean'), ('pass', 'sean')]

c) 读取指定的配置信息

print('host of db:', cp.get('db', 'host')) # host of db: 127.0.0.1
print('host of ssh:', cp.get('ssh', 'host')) # host of ssh: 192.168.10.111

d) 按类型读取配置信息:getint、 getfloat 和 getboolean

print(type(cp.getint('db', 'port'))) # <type 'int'>

e) 判断 option 是否存在

print(cp.has_option('db', 'host')) # True

f) 设置 option

cp.set('db', 'host','192.168.10.222')

g) 删除 option

cp.remove_option('db', 'host')

h) 判断 section 是否存在

print(cp.has_section('db')) # True

i) 添加 section

cp.add_section('new_sect')

j) 删除 section

cp.remove_section('db')

k) 保存配置,set、 remove_option、 add_section 和 remove_section 等操作并不会修改配置文件,write 方法可以将 ConfigParser 对象的配置写到文件中

cp.write(open('config.conf', 'w'))
cp.write(sys.stdout)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
举例讲解Django中数据模型访问外键值的方法
Jul 21 Python
wxpython实现图书管理系统
Mar 12 Python
Python处理中文标点符号大集合
May 14 Python
python向字符串中添加元素的实例方法
Jun 28 Python
用Python配平化学方程式的方法
Jul 20 Python
Django对models里的objects的使用详解
Aug 17 Python
基于TensorFlow中自定义梯度的2种方式
Feb 04 Python
JAVA及PYTHON质数计算代码对比解析
Jun 10 Python
Django基于Models定制Admin后台实现过程解析
Nov 11 Python
Python实现邮件发送的详细设置方法(遇到问题)
Jan 18 Python
python爬虫如何解决图片验证码
Feb 14 Python
Python入门之基础语法详解
May 11 Python
Python使用windows设置定时执行脚本
Nov 12 #Python
Django restful framework生成API文档过程详解
Nov 12 #Python
Python通过Schema实现数据验证方式
Nov 12 #Python
Django用户认证系统如何实现自定义
Nov 12 #Python
Django自带用户认证系统使用方法解析
Nov 12 #Python
Django多数据库联用实现方法解析
Nov 12 #Python
Django数据库迁移常见使用方法
Nov 12 #Python
You might like
php二维数组排序详解
2013/11/06 PHP
PHP数组对象与Json转换操作实例分析
2019/10/22 PHP
解决windows上php xdebug 无法调试的问题
2020/02/19 PHP
Yii框架小部件(Widgets)用法实例详解
2020/05/15 PHP
IE浏览器兼容Firefox的JS脚本的代码
2008/10/23 Javascript
Extjs学习过程中新手容易碰到的低级错误积累
2010/02/11 Javascript
Web前端设计模式  制作漂亮的弹出层
2010/10/29 Javascript
javascript权威指南 学习笔记之null和undefined
2011/09/25 Javascript
Javascript 中的 call 和 apply使用介绍
2012/02/22 Javascript
文本框文本自动补全效果示例分享
2014/01/19 Javascript
js代码实现随机颜色的小方块
2015/07/30 Javascript
使用CDN和AJAX加速WordPress中jQuery的加载
2015/12/05 Javascript
轻松搞定jQuery.noConflict()
2016/02/15 Javascript
JS监听微信、支付宝等移动app及浏览器的返回、后退、上一页按钮的事件方法
2016/08/05 Javascript
Node.js学习之地址解析模块URL的使用详解
2017/09/28 Javascript
js jquery 获取某一元素到浏览器顶端的距离实现方法
2018/09/05 jQuery
javascript 模块依赖管理的本质深入详解
2020/04/30 Javascript
python实现网页自动签到功能
2019/01/21 Python
python实现beta分布概率密度函数的方法
2019/07/08 Python
python调用接口的4种方式代码实例
2019/11/19 Python
给Python学习者的文件读写指南(含基础与进阶)
2020/01/29 Python
纯CSS3实现圆圈动态发光特效动画的示例代码
2021/03/08 HTML / CSS
Melijoe时尚童装德国官网:Melijoe德国
2016/09/03 全球购物
英国空调、除湿机和通风设备排名第一:Air Con Centre
2019/02/25 全球购物
size?爱尔兰官方网站:英国伦敦的球鞋精品店
2019/03/31 全球购物
Regatta官网:英国最受欢迎的户外服装和鞋类品牌
2019/05/01 全球购物
编写一个类体现构造,公有,私有方法,静态,私有变量
2013/08/10 面试题
自荐书模板
2013/12/19 职场文书
鲜花方阵解说词
2014/02/13 职场文书
关于青春的演讲稿
2014/05/05 职场文书
2014年信用社工作总结
2014/11/25 职场文书
杜甫草堂导游词
2015/02/03 职场文书
2016会计专业自荐信范文
2016/01/28 职场文书
关于公司年会的开幕词
2016/03/04 职场文书
2019学校请假条格式及范文
2019/06/25 职场文书
教你快速构建一个基于nginx的web集群项目
2021/11/27 Servers