Python中的ConfigParser模块使用详解


Posted in Python onMay 04, 2015

1.基本的读取配置文件

    -read(filename) 直接读取ini文件内容

    -sections() 得到所有的section,并以列表的形式返回

    -options(section) 得到该section的所有option

    -items(section) 得到该section的所有键值对

    -get(section,option) 得到section中option的值,返回为string类型

    -getint(section,option) 得到section中option的值,返回为int类型,还有相应的getboolean()和getfloat() 函数。

2.基本的写入配置文件

    -add_section(section) 添加一个新的section

    -set( section, option, value) 对section中的option进行设置,需要调用write将内容写入配置文件。

 

3.基本例子

test.conf
[sec_a] 
a_key1 = 20 
a_key2 = 10 
  
[sec_b] 
b_key1 = 121 
b_key2 = b_value2 
b_key3 = $r 
b_key4 = 127.0.0.1
parse_test_conf.py
import ConfigParser 
cf = ConfigParser.ConfigParser() 
#read config 
cf.read("test.conf") 
# return all section 
secs = cf.sections() 
print 'sections:', secs 
  
opts = cf.options("sec_a") 
print 'options:', opts 
  
kvs = cf.items("sec_a") 
print 'sec_a:', kvs 
  
#read by type 
str_val = cf.get("sec_a", "a_key1") 
int_val = cf.getint("sec_a", "a_key2") 
  
print "value for sec_a's a_key1:", str_val 
print "value for sec_a's a_key2:", int_val 
  
#write config 
#update value 
cf.set("sec_b", "b_key3", "new-$r") 
#set a new value 
cf.set("sec_b", "b_newkey", "new-value") 
#create a new section 
cf.add_section('a_new_section') 
cf.set('a_new_section', 'new_key', 'new_value') 
  
#write back to configure file 
cf.write(open("test.conf", "w"))

得到终端输出:

sections: ['sec_b', 'sec_a'] 
options: ['a_key1', 'a_key2'] 
sec_a: [('a_key1', "i'm value"), ('a_key2', '22')] 
value for sec_a's a_key1: i'm value 
value for sec_a's a_key2: 22

更新后的test.conf

[sec_b] 
b_newkey = new-value 
b_key4 = 127.0.0.1 
b_key1 = 121 
b_key2 = b_value2 
b_key3 = new-$r 
  
[sec_a] 
a_key1 = i'm value 
a_key2 = 22 
  
[a_new_section] 
new_key = new_value

4.Python的ConfigParser Module中定义了3个类对INI文件进行操作。分别是RawConfigParser、ConfigParser、SafeConfigParser。RawCnfigParser是最基础的INI文件读取类,ConfigParser、SafeConfigParser支持对%(value)s变量的解析。

设定配置文件test2.conf

[portal] 
url = http://%(host)s:%(port)s/Portal 
host = localhost 
port = 8080

使用RawConfigParser:

import ConfigParser 
 
cf = ConfigParser.RawConfigParser() 
 
print "use RawConfigParser() read" 
cf.read("test2.conf") 
print cf.get("portal", "url") 
 
print "use RawConfigParser() write" 
cf.set("portal", "url2", "%(host)s:%(port)s") 
print cf.get("portal", "url2")

得到终端输出:

use RawConfigParser() read 
http://%(host)s:%(port)s/Portal 
use RawConfigParser() write 
%(host)s:%(port)s

改用ConfigParser:

import ConfigParser 
 
cf = ConfigParser.ConfigParser() 
 
print "use ConfigParser() read" 
cf.read("test2.conf") 
print cf.get("portal", "url") 
 
print "use ConfigParser() write" 
cf.set("portal", "url2", "%(host)s:%(port)s") 
print cf.get("portal", "url2")

得到终端输出:

use ConfigParser() read 
http://localhost:8080/Portal 
use ConfigParser() write 
localhost:8080

改用SafeConfigParser:

import ConfigParser 
 
cf = ConfigParser.SafeConfigParser() 
 
print "use SafeConfigParser() read" 
cf.read("test2.conf") 
print cf.get("portal", "url") 
 
print "use SateConfigParser() write" 
cf.set("portal", "url2", "%(host)s:%(port)s") 
print cf.get("portal", "url2")

得到终端输出(效果同ConfigParser):

use SafeConfigParser() read 
http://localhost:8080/Portal 
use SateConfigParser() write 
localhost:8080
Python 相关文章推荐
python显示生日是星期几的方法
May 27 Python
python实现决策树C4.5算法详解(在ID3基础上改进)
May 31 Python
python中WSGI是什么,Python应用WSGI详解
Nov 24 Python
Python学生信息管理系统修改版
Mar 13 Python
详解Python中的分组函数groupby和itertools)
Jul 11 Python
对python生成业务报表的实例详解
Feb 03 Python
Python常见的pandas用法demo示例
Mar 16 Python
在django中使用apscheduler 执行计划任务的实现方法
Feb 11 Python
python使用html2text库实现从HTML转markdown的方法详解
Feb 21 Python
python GUI库图形界面开发之PyQt5线程类QThread详细使用方法
Feb 26 Python
Python代码中如何读取键盘录入的值
May 27 Python
Python离线安装各种库及pip的方法
Nov 28 Python
Python的__builtin__模块中的一些要点知识
May 02 #Python
一些Python中的二维数组的操作方法
May 02 #Python
在Python的Tornado框架中实现简单的在线代理的教程
May 02 #Python
探究Python的Tornado框架对子域名和泛域名的支持
May 02 #Python
Python编程中运用闭包时所需要注意的一些地方
May 02 #Python
按日期打印Python的Tornado框架中的日志的方法
May 02 #Python
详细解读Python的web.py框架下的application.py模块
May 02 #Python
You might like
php计算两个文件相对路径的方法
2015/03/14 PHP
PHP编程开发怎么提高编程效率 提高PHP编程技术
2015/11/09 PHP
PHP读取大文件末尾N行的高效方法推荐
2016/06/03 PHP
弹出模态框modal的实现方法及实例
2017/09/19 PHP
PHP 模拟登陆功能实例详解
2019/09/10 PHP
JavaScript对表格或元素按文本,数字或日期排序的方法
2015/05/26 Javascript
JavaScript正则表达式的分组匹配详解
2016/02/13 Javascript
浅析Javascript的自动分号插入(ASI)机制
2016/09/29 Javascript
想学习javascript JS和jQuery哪个重要 先学哪个
2016/12/11 Javascript
jquery实现左右滑动式轮播图
2017/03/02 Javascript
JavaScript数据结构中栈的应用之表达式求值问题详解
2017/04/11 Javascript
bootstrap的常用组件和栅格式布局详解
2017/05/02 Javascript
详解基于Angular4+ server render(服务端渲染)开发教程
2017/08/28 Javascript
parabola.js抛物线与加入购物车效果的示例代码
2017/10/25 Javascript
Vue实现textarea固定输入行数与添加下划线样式的思路详解
2018/06/28 Javascript
vue + any-touch实现一个iscroll 实现拖拽和滑动动画效果
2019/04/08 Javascript
koa-router路由参数和前端路由的结合详解
2019/05/19 Javascript
javascript function(函数类型)使用与注意事项小结
2019/06/10 Javascript
vue循环数组改变点击文字的颜色
2019/10/14 Javascript
leaflet加载geojson叠加显示功能代码
2020/02/21 Javascript
学前端,css与javascript重难点浅析
2020/06/11 Javascript
使用 Github Actions 自动部署 Angular 应用到 Github Pages的方法
2020/07/20 Javascript
[02:11]DOTA2上海特级锦标赛主赛事第二日RECAP
2016/03/04 DOTA
python算法演练_One Rule 算法(详解)
2017/05/17 Python
在pandas中一次性删除dataframe的多个列方法
2018/04/10 Python
总结python 三种常见的内存泄漏场景
2020/11/20 Python
HTML5单页面手势滑屏切换原理
2016/03/21 HTML / CSS
史泰博(Staples)中国官方网站:办公用品一站式采购
2016/09/05 全球购物
怎样拟定创业计划书
2014/05/01 职场文书
2015年党支部书记工作总结
2015/05/21 职场文书
中小学生安全教育观后感
2015/06/17 职场文书
2015年国庆节新闻稿
2015/07/18 职场文书
保护环境建议书作文300字
2015/09/14 职场文书
MySQL修炼之联结与集合浅析
2021/10/05 MySQL
victoriaMetrics库布隆过滤器初始化及使用详解
2022/04/05 Golang
Python matplotlib绘制条形统计图 处理多个实验多组观测值
2022/04/21 Python