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定时执行指定函数的方法
May 27 Python
python开发之函数定义实例分析
Nov 12 Python
win10系统中安装scrapy-1.1
Jul 03 Python
基于Python3 逗号代码 和 字符图网格(详谈)
Jun 22 Python
Python格式化字符串f-string概览(小结)
Jun 18 Python
Python 多线程搜索txt文件的内容,并写入搜到的内容(Lock)方法
Aug 23 Python
Pytorch中的VGG实现修改最后一层FC
Jan 15 Python
tensorflow 保存模型和取出中间权重例子
Jan 24 Python
浅谈ROC曲线的最佳阈值如何选取
Feb 28 Python
通过cmd进入python的步骤
Jun 16 Python
解决Python 函数声明先后顺序出现的问题
Sep 02 Python
用Python实现职工信息管理系统
Dec 30 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 设置MySQL连接字符集的方法
2011/01/02 PHP
php中header跳转使用include包含解决参数丢失问题
2015/05/08 PHP
获取服务器传来的数据 用JS去空格的正则表达式
2012/03/26 Javascript
js split 的用法和定义 js split分割字符串成数组的实例代码
2012/05/13 Javascript
javascript实现切换td中的值
2014/12/05 Javascript
node.js中的buffer.toJSON方法使用说明
2014/12/14 Javascript
使用struts2+Ajax+jquery验证用户名是否已被注册
2016/03/22 Javascript
javascript经典特效分享 手风琴、轮播图、图片滑动
2016/09/14 Javascript
Bootstrap3 datetimepicker控件使用实例
2016/12/13 Javascript
详解微信小程序开发—你期待的分享功能来了,微信小程序序新增5大功能
2016/12/23 Javascript
关于JS Lodop打印插件打印Bootstrap样式错乱问题的解决方案
2016/12/23 Javascript
js+css3实现旋转效果
2017/01/20 Javascript
js学使用setTimeout实现轮循动画
2017/07/17 Javascript
Vue二次封装axios为插件使用详解
2018/05/21 Javascript
新手快速上手webpack4打包工具的使用详解
2019/01/28 Javascript
javascript的this关键字详解
2019/05/20 Javascript
[01:12]快闪回顾DOTA2亚洲邀请赛(DAC) 静候2018新征程开启
2018/03/11 DOTA
python遍历类中所有成员的方法
2015/03/18 Python
使用python实现正则匹配检索远端FTP目录下的文件
2015/03/25 Python
Python2中的raw_input() 与 input()
2015/06/12 Python
Python中struct模块对字节流/二进制流的操作教程
2017/01/21 Python
Python中is与==判断的区别
2017/03/28 Python
python线程池(threadpool)模块使用笔记详解
2017/11/17 Python
Python实现的计数排序算法示例
2017/11/29 Python
深入解析python中的实例方法、类方法和静态方法
2019/03/11 Python
关于PyCharm安装后修改路径名称使其可重新打开的问题
2020/10/20 Python
canvas学习和滤镜实现代码
2018/08/22 HTML / CSS
MSC邮轮官方网站:加勒比海、地中海和世界各地的假期
2018/08/27 全球购物
采购部部长岗位职责
2014/02/06 职场文书
小学兴趣小组活动总结
2014/07/07 职场文书
停水通知
2015/04/16 职场文书
五一晚会主持词
2015/07/01 职场文书
教师外出学习心得体会
2016/01/18 职场文书
2019通用版劳动合同范本!
2019/07/11 职场文书
详解vue身份认证管理和租户管理
2021/05/25 Vue.js
JavaScript选择器函数querySelector和querySelectorAll
2021/11/27 Javascript