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中的装饰器详解
Apr 13 Python
深入理解Python中变量赋值的问题
Jan 12 Python
Python之csv文件从MySQL数据库导入导出的方法
Jun 21 Python
Python解决线性代数问题之矩阵的初等变换方法
Dec 12 Python
python 读写excel文件操作示例【附源码下载】
Jun 19 Python
Apache,wsgi,django 程序部署配置方法详解
Jul 01 Python
python视频按帧截取图片工具
Jul 23 Python
基于python监控程序是否关闭
Jan 14 Python
python except异常处理之后不退出,解决异常继续执行的实现
Apr 25 Python
使用pymysql查询数据库,把结果保存为列表并获取指定元素下标实例
May 15 Python
Python监听键盘和鼠标事件的示例代码
Nov 18 Python
Python内置数据类型中的集合详解
Mar 18 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(视频)Http下载
2006/12/12 PHP
PHP编程中字符串处理的5个技巧小结
2007/11/13 PHP
PHP Web木马扫描器代码分享
2015/09/06 PHP
laravel框架路由分组,中间件,命名空间,子域名,路由前缀实例分析
2020/02/18 PHP
JQuery 选择器、过滤器介绍
2011/02/14 Javascript
JavaScript自定义日期格式化函数详细解析
2014/01/14 Javascript
js实现最短的XML格式化工具实例
2015/03/12 Javascript
JavaScript实现多个重叠层点击切换效果的方法
2015/04/24 Javascript
JavaScript检测鼠标移动方向的方法
2015/05/22 Javascript
jQuery实现按钮的点击 全选/反选 单选框/复选框 文本框 表单验证
2015/06/25 Javascript
BootStrap响应式导航条实例介绍
2016/05/06 Javascript
利用yarn实现一个webpack+react种子
2016/10/25 Javascript
vue.js初学入门教程(1)
2016/11/03 Javascript
React-Native实现ListView组件之上拉刷新实例(iOS和Android通用)
2017/07/11 Javascript
jQuery 1.9版本以上的浏览器判断方法代码分享
2017/08/28 jQuery
单页面vue引入百度统计的使用方法示例详解
2018/10/13 Javascript
vue中v-show和v-if的异同及v-show用法
2019/06/06 Javascript
vue+element 模态框表格形式的可编辑表单实现
2019/06/07 Javascript
javascript function(函数类型)使用与注意事项小结
2019/06/10 Javascript
vue 使用async写数字动态加载效果案例
2020/07/18 Javascript
小程序实现左滑删除的效果的实例代码
2020/10/19 Javascript
浅谈python中scipy.misc.logsumexp函数的运用场景
2016/06/23 Python
Python基于回溯法子集树模板解决0-1背包问题实例
2017/09/02 Python
对python 多个分隔符split 的实例详解
2018/12/20 Python
python接口调用已训练好的caffe模型测试分类方法
2019/08/26 Python
Python numpy.zero() 初始化矩阵实例
2019/11/27 Python
Python如何截图保存的三种方法(小结)
2020/09/01 Python
Anaconda详细安装步骤图文教程
2020/11/12 Python
西部世纪面试题
2014/12/05 面试题
家佳咖啡店创业计划书
2013/12/27 职场文书
入党积极分子批评与自我批评思想汇报
2014/09/14 职场文书
教师批评与自我批评发言稿
2014/10/15 职场文书
质量整改报告范文
2014/11/08 职场文书
见义勇为事迹材料
2014/12/24 职场文书
超市督导岗位职责
2015/04/10 职场文书
Java后端 Dubbo retries 超时重试机制的解决方案
2022/04/14 Java/Android