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判断操作系统类型代码分享
Nov 22 Python
Python处理RSS、ATOM模块FEEDPARSER介绍
Feb 18 Python
Python实现竖排打印传单手机号码易撕条
Mar 16 Python
Python每天必学之bytes字节
Jan 28 Python
python if not in 多条件判断代码
Sep 21 Python
解决Tensorflow安装成功,但在导入时报错的问题
Jun 13 Python
python opencv旋转图像(保持图像不被裁减)
Jul 26 Python
在Python中,不用while和for循环遍历列表的实例
Feb 20 Python
详解Python二维数组与三维数组切片的方法
Jul 18 Python
Django之使用内置函数和celery发邮件的方法示例
Sep 16 Python
tensorflow 大于某个值为1,小于为0的实例
Jun 30 Python
对Pytorch 中的contiguous理解说明
Mar 03 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静态变量当缓存的方法
2013/11/13 PHP
tp5框架无刷新分页实现方法分析
2019/09/26 PHP
Javascript & DHTML 实例编程(教程)DOM基础和基本API
2007/06/02 Javascript
百度 popup.js 完美修正版非常的不错 脚本之家推荐
2009/04/17 Javascript
提高javascript效率 一次判断,而不要次次判断
2012/03/30 Javascript
JavaScript拆分字符串时产生空字符的解决方案
2014/09/26 Javascript
探讨js字符串数组拼接的性能问题
2014/10/11 Javascript
javascript操作数组详解
2014/12/17 Javascript
Position属性之relative用法
2015/12/14 Javascript
javascript日期格式化方法小结
2015/12/17 Javascript
Bootstrap模仿起筷首页效果
2016/05/09 Javascript
JavaScript适配器模式详解
2017/10/19 Javascript
vue组件name的作用小结
2018/05/23 Javascript
JS异步执行结果获取的3种解决方式
2019/02/19 Javascript
在vue中阻止浏览器后退的实例
2019/11/06 Javascript
Python SQLite3数据库操作类分享
2014/06/10 Python
Python字符串处理之count()方法的使用
2015/05/18 Python
快速了解Python开发中的cookie及简单代码示例
2018/01/17 Python
获取python的list中含有重复值的index方法
2018/06/27 Python
利用selenium爬虫抓取数据的基础教程
2019/06/10 Python
python excel转换csv代码实例
2019/08/26 Python
Django-xadmin后台导入json数据及后台显示信息图标和主题更改方式
2020/03/11 Python
使用pyplot.matshow()函数添加绘图标题
2020/06/16 Python
python中id函数运行方式
2020/07/03 Python
Python限制内存和CPU使用量的方法(Unix系统适用)
2020/08/04 Python
深入了解Python装饰器的高级用法
2020/08/13 Python
联想瑞士官方网站:Lenovo Switzerland
2017/11/19 全球购物
大堂副理的岗位职责范文
2014/02/17 职场文书
岗位聘任书范文
2014/03/29 职场文书
高速铁道技术专业求职信
2014/08/09 职场文书
挂职锻炼工作总结2015
2015/05/28 职场文书
婚庆开业庆典主持词
2015/06/30 职场文书
2016大一新生入学教育心得体会
2016/01/23 职场文书
解析CSS 提取图片主题色功能(小技巧)
2021/05/12 HTML / CSS
Java 语言中Object 类和System 类详解
2021/07/07 Java/Android
Redis实战之Lettuce的使用技巧详解
2022/12/24 Redis