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实现斐波那契(Fibonacci)函数
Mar 25 Python
Python中shape计算矩阵的方法示例
Apr 21 Python
Python将DataFrame的某一列作为index的方法
Apr 08 Python
浅谈flask源码之请求过程
Jul 26 Python
在python里协程使用同步锁Lock的实例
Feb 19 Python
Pandas库之DataFrame使用的学习笔记
Jun 21 Python
Django之PopUp的具体实现方法
Aug 31 Python
Pyecharts 动态地图 geo()和map()的安装与用法详解
Mar 25 Python
python em算法的实现
Oct 03 Python
python利用opencv保存、播放视频
Nov 02 Python
python基于opencv批量生成验证码的示例
Apr 28 Python
Python 如何利用ffmpeg 处理视频素材
Nov 27 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
Protoss魔法科技
2020/03/14 星际争霸
一个odbc连mssql分页的类
2006/10/09 PHP
php页面跳转session cookie丢失导致不能登录等问题的解决方法
2016/12/12 PHP
基于jquery的给文章加入关键字链接
2010/10/26 Javascript
js如何实现设计模式中的模板方法
2013/07/23 Javascript
setTimeout内不支持jquery的选择器的解决方案
2015/04/28 Javascript
简介JavaScript中的setHours()方法的使用
2015/06/11 Javascript
浅谈JavaScript中的string拥有方法的原因
2015/08/28 Javascript
Jquery UI实现一次拖拽多个选中的元素操作
2020/12/01 Javascript
select下拉框插件jquery.editable-select详解
2017/01/22 Javascript
Bootstrap下拉菜单样式
2017/02/07 Javascript
使用jquery模拟a标签的click事件无法实现跳转的解决
2018/12/04 jQuery
javascript实现打砖块小游戏(附完整源码)
2020/09/18 Javascript
微信小程序淘宝首页双排图片布局排版代码(推荐)
2020/10/29 Javascript
python中的sort方法使用详解
2014/07/25 Python
Python编程之属性和方法实例详解
2015/05/19 Python
python爬取cnvd漏洞库信息的实例
2019/02/14 Python
django admin 添加自定义链接方式
2020/03/11 Python
tensorflow 2.0模式下训练的模型转成 tf1.x 版本的pb模型实例
2020/06/22 Python
python定义类的简单用法
2020/07/24 Python
python实现发送邮件
2021/03/02 Python
CSS3实现的炫酷菜单代码分享
2015/03/12 HTML / CSS
HTC VIVE美国官网:VR虚拟现实眼镜
2018/02/13 全球购物
什么是静态路由?什么是动态路由?各自的特点是什么?
2015/09/16 面试题
介绍一下XMLHttpRequest对象的常用方法和属性
2013/05/24 面试题
办公室年终个人自我评价
2013/10/28 职场文书
好邻里事迹材料
2014/01/16 职场文书
挖掘机司机岗位职责
2014/02/12 职场文书
年会主持词结束语
2014/03/27 职场文书
竞选学生会演讲稿
2014/04/25 职场文书
职务说明书范文
2014/05/07 职场文书
工地食品安全责任书
2015/05/09 职场文书
新员工入职感言范文!
2019/07/04 职场文书
2019年励志签名:致拼搏路上的自己
2019/10/11 职场文书
(开源)微信小程序+mqtt,esp8266温湿度读取
2021/04/02 Javascript
手把手教你从零开始react+antd搭建项目
2021/06/03 Javascript