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 相关文章推荐
详解Django缓存处理中Vary头部的使用
Jul 24 Python
Python实现Mysql数据库连接池实例详解
Apr 11 Python
python数字图像处理实现直方图与均衡化
May 04 Python
Python操作Jira库常用方法解析
Apr 10 Python
计算Python Numpy向量之间的欧氏距离实例
May 22 Python
Python中SQLite如何使用
May 27 Python
自学python用什么系统好
Jun 23 Python
matplotlib subplot绘制多个子图的方法示例
Jul 28 Python
Python配置pip国内镜像源的实现
Aug 20 Python
详解python内置模块urllib
Sep 09 Python
基于python实现复制文件并重命名
Sep 16 Python
python迷宫问题深度优先遍历实例
Jun 20 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中$_REQUEST、$_POST、$_GET的区别和联系小结
2011/11/23 PHP
php 使用GD库为页面增加水印示例代码
2014/03/24 PHP
PHP实现货币换算的方法
2014/11/29 PHP
PHP调试函数和日志记录函数分享
2015/01/31 PHP
php数字运算验证码的实现代码
2015/07/30 PHP
PHP7.1方括号数组符号多值复制及指定键值赋值用法分析
2016/09/26 PHP
PHP PDO和消息队列的个人理解与应用实例分析
2019/11/25 PHP
PHP For循环字母A-Z当超过26个字母时输出AA,AB,AC
2020/02/16 PHP
javascript 新浪背投广告实现代码
2009/07/07 Javascript
Riot.js 快速的JavaScript单元测试框架
2009/11/09 Javascript
20款非常优秀的 jQuery 工具提示插件 推荐
2012/07/15 Javascript
js遍历td tr等html元素
2012/12/13 Javascript
jquery实现省市select下拉框的替换(示例代码)
2014/02/22 Javascript
jQuery中text() val()和html()的区别实例详解
2016/06/28 Javascript
jQuery移除或禁用html元素点击事件常用方法小结
2017/02/10 Javascript
单击按钮发送验证码,出现倒计时的简单实例
2017/03/17 Javascript
微信小程序 新建登录页并实现tabBar隐藏
2017/06/13 Javascript
老生常谈JavaScript面向对象基础与this指向问题
2017/10/16 Javascript
JavaScript设计模式之调停者模式实例详解
2018/02/03 Javascript
JavaScript实现图片上传并预览并提交ajax
2019/09/30 Javascript
Vuex模块化应用实践示例
2020/02/03 Javascript
python使用htmllib分析网页内容的方法
2015/05/08 Python
Python smallseg分词用法实例分析
2015/05/28 Python
python交互式图形编程实例(三)
2017/11/17 Python
Python 互换字典的键值对实例
2019/02/12 Python
Pycharm 2019 破解激活方法图文详解
2019/10/11 Python
Pytorch使用PIL和Numpy将单张图片转为Pytorch张量方式
2020/05/25 Python
OpenCV 使用imread()函数读取图片的六种正确姿势
2020/07/09 Python
基于PyInstaller各参数的含义说明
2021/03/04 Python
互动出版网:专业书籍
2017/03/21 全球购物
委托证明的格式
2014/01/10 职场文书
信息技术专业大学生职业生涯规划书
2014/01/24 职场文书
幼儿园优秀教师事迹
2014/02/13 职场文书
JavaScript文档对象模型DOM
2021/11/20 Javascript
python实现对doc、txt、xls等文档的读写操作
2022/04/02 Python
Redis特殊数据类型HyperLogLog基数统计算法讲解
2022/06/01 Redis