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 相关文章推荐
python3图片转换二进制存入mysql
Dec 06 Python
人机交互程序 python实现人机对话
Nov 14 Python
python利用跳板机ssh远程连接redis的方法
Feb 19 Python
python3+pyqt5+itchat微信定时发送消息的方法
Feb 20 Python
PySide和PyQt加载ui文件的两种方法
Feb 27 Python
python多线程下信号处理程序示例
May 31 Python
如何通过雪花算法用Python实现一个简单的发号器
Jul 03 Python
python从list列表中选出一个数和其对应的坐标方法
Jul 20 Python
python gdal安装与简单使用
Aug 01 Python
基于python 微信小程序之获取已存在模板消息列表
Aug 05 Python
Python+pyftpdlib实现局域网文件互传
Aug 24 Python
python drf各类组件的用法和作用
Jan 12 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 作用域解析运算符(::)
2010/07/27 PHP
PHP处理postfix邮件内容的方法
2015/06/16 PHP
PHP使用Pear发送邮件(Windows环境)
2016/01/05 PHP
Thinkphp3.2.3整合phpqrcode生成带logo的二维码
2016/07/21 PHP
php实现网页端验证码功能
2017/07/11 PHP
PHP迭代器接口Iterator用法分析
2017/12/28 PHP
PHP进阶学习之反射基本概念与用法分析
2019/06/18 PHP
JavaScript字符串对象toLowerCase方法入门实例(用于把字母转换为小写)
2014/10/17 Javascript
JavaScript 深层克隆对象详解及实例
2016/11/03 Javascript
纯js实现html转pdf的简单实例(推荐)
2017/02/16 Javascript
原生javascript上传图片带进度条【实例分享】
2017/04/06 Javascript
JS回调函数基本定义与用法实例分析
2017/05/24 Javascript
详解使用angularjs的ng-options时如何设置默认值(初始值)
2017/07/18 Javascript
Js面试算法详解
2018/04/08 Javascript
vue异步加载高德地图的实现
2018/06/19 Javascript
vue插件draggable实现拖拽移动图片顺序
2018/12/01 Javascript
[18:20]DOTA2 HEROS教学视频教你分分钟做大人-昆卡
2014/06/11 DOTA
python使用心得之获得github代码库列表
2014/06/25 Python
Python urllib、urllib2、httplib抓取网页代码实例
2015/05/09 Python
Python使用re模块正则提取字符串中括号内的内容示例
2018/06/01 Python
在python中用print()输出多个格式化参数的方法
2019/07/16 Python
使用python 将图片复制到系统剪贴中
2019/12/13 Python
python 函数中的参数类型
2020/02/11 Python
日本面向世界,国际级的免税在线购物商城:DOKODEMO
2017/02/01 全球购物
navabi英国:设计师大码女装
2019/06/25 全球购物
.NET是怎么支持多种语言的
2015/02/24 面试题
JAVA中运算符的分类及举例
2015/09/12 面试题
技术合作协议书范本
2014/04/18 职场文书
市场营销专业求职信
2014/06/17 职场文书
2014年服装销售工作总结
2014/11/27 职场文书
幼儿园中班教师个人总结
2015/02/05 职场文书
第一节英语课开场白
2015/06/01 职场文书
中秋节随笔
2015/08/15 职场文书
优秀员工演讲稿
2019/06/21 职场文书
nginx如何将http访问的网站改成https访问
2021/03/31 Servers
浅谈MySQL表空间回收的正确姿势
2021/10/05 MySQL