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 17 Python
Python爬取京东的商品分类与链接
Aug 26 Python
python中使用正则表达式的后向搜索肯定模式(推荐)
Nov 11 Python
Python 元类实例解析
Apr 04 Python
python使用turtle库与random库绘制雪花
Jun 22 Python
Python3 max()函数基础用法
Feb 19 Python
Python异步操作MySQL示例【使用aiomysql】
May 16 Python
pyinstaller 3.6版本通过pip安装失败的解决办法(推荐)
Jan 18 Python
从python读取sql的实例方法
Jul 21 Python
利用Pycharm + Django搭建一个简单Python Web项目的步骤
Oct 22 Python
Python中用xlwt制作表格实例讲解
Nov 05 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
全国FM电台频率大全 - 3 河北省
2020/03/11 无线电
星际争霸 Starcraft 编年史
2020/03/14 星际争霸
PHP数组实例总结与说明
2011/08/23 PHP
php 模拟get_headers函数的代码示例
2013/04/27 PHP
测试php函数的方法
2013/11/13 PHP
PHP中使用memcache存储session的三种配置方法
2014/04/05 PHP
PHP生成唯一订单号的方法汇总
2015/04/16 PHP
JavaScript版代码高亮
2006/06/26 Javascript
javascript编程起步(第七课)
2007/02/27 Javascript
List Information About the Binary Files Used by an Application
2007/06/11 Javascript
创建一个复制UBB软件信息的链接或按钮的js代码
2008/01/06 Javascript
浏览器解析js生成的html出现样式问题的解决方法
2012/04/16 Javascript
JQuery插件Style定制化方法的分析与比较
2012/05/03 Javascript
jquery.post用法示例代码
2014/01/03 Javascript
ECMAScript 5中的属性描述符详解
2015/03/02 Javascript
浅谈JavaScript中指针和地址
2015/07/26 Javascript
jQuery移动web开发中的页面初始化与加载事件
2015/12/03 Javascript
JSON对象转化为字符串详解
2017/08/11 Javascript
基于JavaScript实现新增内容滚动播放效果附完整代码
2017/08/24 Javascript
关于自定义Egg.js的请求级别日志详解
2018/12/12 Javascript
JS图片预加载三种实现方法解析
2020/05/08 Javascript
[09:34]2018DOTA2国际邀请赛寻真——永不放弃的iG
2018/08/14 DOTA
python交互式图形编程实例(三)
2017/11/17 Python
python如何发布自已pip项目的方法步骤
2018/10/09 Python
python获取Pandas列名的几种方法
2019/08/07 Python
pycharm新建Vue项目的方法步骤(图文)
2020/03/04 Python
美国最大婚纱连锁店运营商:David’s Bridal
2019/03/12 全球购物
成教毕业生自我鉴定
2013/10/23 职场文书
国旗下讲话演讲稿
2014/05/08 职场文书
电工技术比武方案
2014/05/11 职场文书
工程催款通知书
2015/04/17 职场文书
2015年采购员工作总结
2015/04/27 职场文书
小学生安全保证书
2015/05/09 职场文书
教师听课学习心得体会
2016/01/15 职场文书
新西兰:最新留学学习计划书写作指南
2019/07/15 职场文书
创业计划书之水果店
2019/07/18 职场文书