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双向链表实现实例代码
Nov 21 Python
深入Python函数编程的一些特性
Apr 13 Python
Python 解决中文写入Excel时抛异常的问题
May 03 Python
python在每个字符后添加空格的实例
May 07 Python
详解关于Django中ORM数据库迁移的配置
Oct 08 Python
opencv实现图片模糊和锐化操作
Nov 19 Python
python3 字符串/列表/元组(str/list/tuple)相互转换方法及join()函数的使用
Apr 03 Python
python获取txt文件词向量过程详解
Jul 05 Python
python实现数据分析与建模
Jul 11 Python
pytorch sampler对数据进行采样的实现
Dec 31 Python
Python计算指定日期是今年的第几天(三种方法)
Mar 26 Python
自定义Django_rest_framework_jwt登陆错误返回的解决
Oct 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 显示指定路径下的图片
2009/10/29 PHP
php提交表单时判断 if($_POST[submit])与 if(isset($_POST[submit])) 的区别
2011/02/08 PHP
如何利用php array_multisort函数 对数据库结果进行复杂排序
2013/06/08 PHP
PHP中file_exists使用中遇到的问题小结
2016/04/05 PHP
php mysql_real_escape_string addslashes及mysql绑定参数防SQL注入攻击
2016/12/23 PHP
总结PHP代码规范、流程规范、git规范
2018/06/18 PHP
CodeIgniter框架钩子机制实现方法【hooks类】
2018/08/21 PHP
Extjs ajax同步请求时post方式参数发送方式
2009/08/05 Javascript
js截取函数(indexOf,join等)
2010/09/01 Javascript
解析js原生方法创建表格效率测试
2013/07/08 Javascript
JavaScript中获取高度和宽度函数总结
2014/10/08 Javascript
jQuery中height()方法用法实例
2014/12/24 Javascript
js实现感应鼠标图片透明度变化的方法
2015/02/20 Javascript
AngularJS中实现用户访问的身份认证和表单验证功能
2016/04/21 Javascript
纯JS前端实现分页代码
2016/06/21 Javascript
jQuery弹出下拉列表插件(实现kindeditor的@功能)
2016/08/16 Javascript
javascript验证内容为数字以及长度为10的简单实例
2016/08/20 Javascript
AngularJS过滤器filter用法总结
2016/12/13 Javascript
解决Angular.Js与Django标签冲突的方案
2016/12/20 Javascript
javascript实现日期三级联动下拉框选择菜单
2020/12/03 Javascript
详解angularjs中的隔离作用域理解以及绑定策略
2017/05/31 Javascript
用vue封装插件并发布到npm的方法步骤
2017/10/18 Javascript
vue使用axios跨域请求数据问题详解
2017/10/18 Javascript
JavaScript使用prototype原型实现的封装继承多态示例
2018/08/31 Javascript
vue项目中,main.js,App.vue,index.html的调用方法
2018/09/20 Javascript
在vue中通过render函数给子组件设置ref操作
2020/11/17 Vue.js
python中实现迭代器(iterator)的方法示例
2017/01/19 Python
详解多线程Django程序耗尽数据库连接的问题
2018/10/08 Python
对python3中pathlib库的Path类的使用详解
2018/10/14 Python
私有程序集与共享程序集有什么区别
2013/04/05 面试题
咖啡店的创业计划书,让你hold不住
2014/01/03 职场文书
领导检查欢迎词
2014/01/14 职场文书
服务之星获奖感言
2014/01/21 职场文书
2014年民主评议党员工作总结
2014/12/02 职场文书
新教师教学工作总结
2015/08/12 职场文书
python基础之类方法和静态方法
2021/10/24 Python