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 相关文章推荐
机器学习10大经典算法详解
Dec 07 Python
pandas 两列时间相减换算为秒的方法
Apr 20 Python
Flask框架WTForm表单用法示例
Jul 20 Python
Anaconda下配置python+opencv+contribx的实例讲解
Aug 06 Python
如何基于Python实现电子邮件的发送
Dec 16 Python
python通过移动端访问查看电脑界面
Jan 06 Python
基于Tensorflow:CPU性能分析
Feb 10 Python
记一次pyinstaller打包pygame项目为exe的过程(带图片)
Mar 02 Python
浅谈keras 的抽象后端(from keras import backend as K)
Jun 16 Python
Python Selenium模块安装使用教程详解
Jul 09 Python
浅析Python 序列化与反序列化
Aug 05 Python
详解非极大值抑制算法之Python实现
Jun 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&MYSQL留言板源码
2020/07/19 PHP
超小PHP小马小结(方便查找后门的朋友)
2012/05/05 PHP
php读取mysql中文数据出现乱码的解决方法
2013/08/16 PHP
php中将一段数据存到一个txt文件中并显示其内容
2014/08/15 PHP
用Javascript做flash做的事..才完成的一个类.Auntion Action var 0.1
2007/02/23 Javascript
Js 本页面传值实现代码
2009/05/17 Javascript
JQERY limittext 插件0.2版(长内容限制显示)
2010/08/27 Javascript
jQuery学习笔记之jQuery.extend(),jQuery.fn.extend()分析
2014/06/09 Javascript
js实现ArrayList功能附实例代码
2014/10/29 Javascript
JS控制网页动态生成任意行列数表格的方法
2015/03/09 Javascript
IE10中flexigrid无法显示数据的解决方法
2015/07/26 Javascript
JavaScript脚本库编写的方法
2015/12/09 Javascript
实例详解jQuery结合GridView控件的使用方法
2016/01/04 Javascript
使用jQuery.form.js/springmvc框架实现文件上传功能
2016/05/12 Javascript
url传递的参数值中包含&时,url自动截断问题的解决方法
2016/08/02 Javascript
关于webuploader插件使用过程遇到的小问题
2016/11/07 Javascript
webpack开发跨域问题解决办法
2017/08/03 Javascript
JS实现的简单表单验证功能示例
2017/10/13 Javascript
基于打包工具Webpack进行项目开发实例
2018/05/29 Javascript
uni-app实现点赞评论功能
2019/11/25 Javascript
Python实现检测服务器是否可以ping通的2种方法
2015/01/01 Python
django之常用命令详解
2016/06/30 Python
Python cookbook(数据结构与算法)将序列分解为单独变量的方法
2018/02/13 Python
如何在django里上传csv文件并进行入库处理的方法
2019/01/02 Python
Django处理Ajax发送的Get请求代码详解
2019/07/29 Python
基于python实现图片转字符画代码实例
2020/09/04 Python
Python图像读写方法对比
2020/11/16 Python
ALDO美国官网:加拿大女鞋品牌
2018/12/28 全球购物
房地产广告策划方案
2014/05/15 职场文书
环境卫生标语
2014/06/09 职场文书
学生抄袭作业的检讨书
2014/10/02 职场文书
2019年幼儿园管理条例范本!
2019/07/17 职场文书
委托开发合同书(标准版)
2019/08/07 职场文书
PO模式在selenium自动化测试框架的优势
2022/03/20 Python
golang使用map实现去除重复数组
2022/04/14 Golang
Go语言编译原理之源码调试
2022/08/05 Golang