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使用7z解压apk包的方法
Apr 18 Python
Python基于pygame实现的弹力球效果(附源码)
Nov 11 Python
Python中常见的异常总结
Feb 20 Python
Python引用计数操作示例
Aug 23 Python
详解python使用turtle库来画一朵花
Mar 21 Python
PyQt5图形界面播放音乐的实例
Jun 17 Python
Python 根据数据模板创建shapefile的实现
Nov 26 Python
Python 安装 virturalenv 虚拟环境的教程详解
Feb 21 Python
使用Jupyter notebooks上传文件夹或大量数据到服务器
Apr 14 Python
Python基于wordcloud及jieba实现中国地图词云图
Jun 09 Python
如何向scrapy中的spider传递参数的几种方法
Nov 18 Python
浅谈Python中对象是如何被调用的
Apr 06 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中eclipse 用空格替换 tab键
2013/06/24 PHP
抛弃 PHP 代价太高
2016/04/26 PHP
服务端 VBScript 与 JScript 几个相同特性的写法 By shawl.qiu
2007/03/06 Javascript
javascript的键盘控制事件说明
2008/04/15 Javascript
javascript递归回溯法解八皇后问题
2015/04/22 Javascript
简单了解Backbone.js的Model模型以及View视图的源码
2016/02/14 Javascript
一款简单的jQuery图片标注效果附源码下载
2016/03/22 Javascript
javascript表单事件处理方法详解
2016/05/15 Javascript
js判断复选框是否选中及选中个数的实现代码
2016/05/30 Javascript
微信小程序 实现tabs选项卡效果实例代码
2016/10/31 Javascript
简单实现JS上传图片预览功能
2017/04/14 Javascript
AngularJS 教程及实例代码
2017/10/23 Javascript
Vue.js 2.5新特性介绍(推荐)
2017/10/24 Javascript
详解vue-cli下ESlint 配置说明
2018/09/03 Javascript
Vue数据双向绑定的深入探究
2018/11/27 Javascript
JS浅拷贝和深拷贝原理与实现方法分析
2019/02/28 Javascript
浅谈Express.js解析Post数据类型的正确姿势
2019/05/30 Javascript
MockJs结合json-server模拟后台数据
2020/08/26 Javascript
vue项目中使用AES实现密码加密解密(ECB和CBC两种模式)
2019/08/12 Javascript
查找Vue中下标的操作(some和findindex)
2020/08/12 Javascript
python爬虫常用的模块分析
2014/08/29 Python
Python内置函数的用法实例教程
2014/09/08 Python
Python实现批量下载文件
2015/05/17 Python
详解Python中的元组与逻辑运算符
2015/10/13 Python
Python操作Access数据库基本步骤分析
2016/09/19 Python
python根据url地址下载小文件的实例
2018/12/18 Python
Python实现去除列表中重复元素的方法总结【7种方法】
2019/02/16 Python
Windows平台Python编程必会模块之pywin32介绍
2019/10/01 Python
python Canny边缘检测算法的实现
2020/04/24 Python
canvas绘制文本内容自动换行的实现代码
2019/01/14 HTML / CSS
澳大利亚优惠网站:Deals.com.au
2019/07/02 全球购物
博朗(Braun)俄罗斯官方商店:德国小家电品牌
2019/09/24 全球购物
ORACLE十问
2015/04/20 面试题
企业精细化管理实施方案
2014/03/23 职场文书
2016高考寄语集锦
2015/12/04 职场文书
深度学习小工程练习之垃圾分类详解
2021/04/14 Python