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 相关文章推荐
python转换摩斯密码示例
Feb 16 Python
Python中处理unchecked未捕获异常实例
Jan 17 Python
Python闭包实现计数器的方法
May 05 Python
详解Python设计模式编程中观察者模式与策略模式的运用
Mar 02 Python
Python3之读取连接过的网络并定位的方法
Apr 22 Python
python找出因数与质因数的方法
Jul 25 Python
详解如何减少python内存的消耗
Aug 09 Python
pandas分组聚合详解
Apr 10 Python
宝塔面板成功部署Django项目流程(图文)
Jun 22 Python
Django def clean()函数对表单中的数据进行验证操作
Jul 09 Python
详解Python3.8+PyQt5+pyqt5-tools+Pycharm配置详细教程
Nov 02 Python
OpenCV-Python模板匹配人眼的实例
Jun 08 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
jQuery EasyUI API 中文文档 - DateBox日期框
2011/10/15 PHP
php blowfish加密解密算法
2016/07/02 PHP
页面中iframe相互传值传参
2009/12/13 Javascript
JS读取XML文件示例代码
2013/11/15 Javascript
探讨js字符串数组拼接的性能问题
2014/10/11 Javascript
jQuery跨域问题解决方案
2015/08/03 Javascript
javascript实现拖动元素交换位置
2015/11/29 Javascript
老生常谈JQuery data方法的使用
2016/09/09 Javascript
jQuery.form.js的使用详解
2017/06/14 jQuery
three.js中文文档学习之通过模块导入
2017/11/20 Javascript
基于vue-router 多级路由redirect 重定向的问题
2018/09/03 Javascript
JavaScript创建对象方式总结【工厂模式、构造函数模式、原型模式等】
2018/12/19 Javascript
微信小程序wepy框架学习和使用心得详解
2019/05/24 Javascript
Vue开发中遇到的跨域问题及解决方法
2020/02/11 Javascript
es6中let和const的使用方法详解
2020/02/24 Javascript
[02:13] 完美世界DOTA2联赛PWL DAY5集锦
2020/11/03 DOTA
python实现查询IP地址所在地
2015/03/29 Python
Windows下为Python安装Matplotlib模块
2015/11/06 Python
python密码错误三次锁定(实例讲解)
2017/11/14 Python
Python3+django2.0+apache2+ubuntu14部署网站上线的方法
2018/07/07 Python
Python 利用切片从列表中取出一部分使用的方法
2019/02/01 Python
Python openpyxl读取单元格字体颜色过程解析
2019/09/03 Python
Jupyter notebook 远程配置及SSL加密教程
2020/04/14 Python
学习十八大报告感言
2014/02/04 职场文书
毕业实习评语
2014/02/10 职场文书
保险公司开门红口号
2014/06/21 职场文书
法人单位授权委托书范文
2014/10/06 职场文书
安全保证书怎么写
2015/02/28 职场文书
2015年度优秀员工自荐书
2015/03/06 职场文书
民间借贷借条范本
2015/05/25 职场文书
施工现场安全管理制度
2015/08/05 职场文书
公安干警正风肃纪心得体会
2016/01/15 职场文书
Mysql数据库命令大全
2021/05/26 MySQL
python ansible自动化运维工具执行流程
2021/06/24 Python
Python道路车道线检测的实现
2021/06/27 Python
分享mysql的current_timestamp小坑及解决
2021/11/27 MySQL