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 图片验证码代码
Dec 07 Python
python解析xml文件实例分析
May 27 Python
Python列表list操作符实例分析【标准类型操作符、切片、连接字符、列表解析、重复操作等】
Jul 24 Python
Python简单实现的代理服务器端口映射功能示例
Apr 08 Python
解决Python中list里的中文输出到html模板里的问题
Dec 17 Python
python操作kafka实践的示例代码
Jun 19 Python
Python中一个for循环循环多个变量的示例
Jul 16 Python
flask框架配置mysql数据库操作详解
Nov 29 Python
python 实现屏幕录制示例
Dec 23 Python
python画图时设置分辨率和画布大小的实现(plt.figure())
Jan 08 Python
5分钟快速掌握Python定时任务框架的实现
Jan 26 Python
python munch库的使用解析
May 25 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中eval函数的危害与正确禁用方法
2014/06/30 PHP
分享一个Laravel好用的Cache宏
2015/03/02 PHP
PHP 实现公历日期与农历日期的互转换
2017/09/13 PHP
PHP7实现和CryptoJS的AES加密方式互通示例【AES-128-ECB加密】
2019/06/08 PHP
jQuery 全选效果实现代码
2009/03/23 Javascript
JS 去前后空格大全(IE9亲测)
2013/07/15 Javascript
用Jquery.load载入页面实现局部刷新
2014/01/22 Javascript
JavaScript动态加载样式表的方法
2015/03/21 Javascript
学习jQuey中的return false
2015/12/18 Javascript
Node.js中process模块常用的属性和方法
2016/12/13 Javascript
Javascript Function.prototype.bind详细分析
2016/12/29 Javascript
Jquery树插件zTree实现菜单树
2017/01/24 Javascript
JS检测window.open打开的窗口是否关闭
2017/06/25 Javascript
JavaScript中的 new 命令
2019/05/22 Javascript
vue 实现路由跳转时更改页面title
2019/11/05 Javascript
vue 子组件和父组件传值的示例
2020/09/11 Javascript
Python函数的周期性执行实现方法
2016/08/13 Python
Python实现简单文本字符串处理的方法
2018/01/22 Python
Python实现的NN神经网络算法完整示例
2018/06/19 Python
解决python读取几千万行的大表内存问题
2018/06/26 Python
详解将Pandas中的DataFrame类型转换成Numpy中array类型的三种方法
2019/07/06 Python
python之pexpect实现自动交互的例子
2019/07/25 Python
css3中的calc函数浅析
2018/07/10 HTML / CSS
CSS3制作半透明边框(Facebox)类似渐变
2012/12/09 HTML / CSS
谷歌浏览器小字体处理方案即12px以下字体
2013/12/17 HTML / CSS
h5网页水印SDK的实现代码示例
2019/02/19 HTML / CSS
如何利用cmp命令比较文件
2013/09/23 面试题
教师实习自我鉴定
2013/12/14 职场文书
养殖人员的创业计划书范文
2013/12/26 职场文书
政法大学毕业生自荐信范文
2014/01/01 职场文书
护士演讲稿范文
2014/01/05 职场文书
十佳青年个人事迹材料
2014/01/28 职场文书
公安机关党的群众路线教育实践活动剖析材料
2014/10/10 职场文书
六查六看个人剖析材料
2014/10/14 职场文书
胡桃夹子观后感
2015/06/11 职场文书
Python生成九宫格图片的示例代码
2021/04/14 Python