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 获取文件列表(或是目录例表)
Mar 25 Python
python自动安装pip
Apr 24 Python
python里运用私有属性和方法总结
Jul 08 Python
Python3环境安装Scrapy爬虫框架过程及常见错误
Jul 12 Python
Python3之字节串bytes与字节数组bytearray的使用详解
Aug 27 Python
基于Python解密仿射密码
Oct 21 Python
Python通过VGG16模型实现图像风格转换操作详解
Jan 16 Python
python使用paramiko实现ssh的功能详解
Mar 06 Python
django admin 添加自定义链接方式
Mar 11 Python
python实现3D地图可视化
Mar 25 Python
浅谈python出错时traceback的解读
Jul 15 Python
Pycharm学生免费专业版安装教程的方法步骤
Sep 24 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绘制圆形的方法
2015/01/24 PHP
php和editplus正则表达式去除空白行
2015/04/17 PHP
php集成套件服务器xampp安装使用教程(适合第一次玩PHP的新手)
2015/06/03 PHP
PHP批量删除jQuery操作
2017/07/23 PHP
javascript fullscreen全屏实现代码
2009/04/09 Javascript
Js(JavaScript)中,弹出是或否的选择框示例(confirm用法的实例分析)
2013/07/09 Javascript
JS实现图片翻书效果示例代码
2013/09/09 Javascript
javascript中普通函数的使用介绍
2013/12/19 Javascript
JS实现兼容各浏览器解析XML文档数据的方法
2015/06/01 Javascript
基于JS实现发送短信验证码后的倒计时功能(无视页面刷新,页面关闭不进行倒计时功能)
2016/09/02 Javascript
js判断iframe中元素是否存在的实现代码
2016/12/24 Javascript
jQuery Form表单取值的方法
2017/01/11 Javascript
解决JS内存泄露之js对象和dom对象互相引用问题
2017/06/25 Javascript
使用vue构建移动应用实战代码
2017/08/02 Javascript
jQuery实现可兼容IE6的遮罩功能详解
2017/09/19 jQuery
angular动态表单制作
2018/02/23 Javascript
jQuery实现的两种简单弹窗效果示例
2018/04/18 jQuery
微信小程序模板消息限制实现无限制主动推送的示例代码
2019/08/27 Javascript
vue实现文件上传读取及下载功能
2020/11/17 Javascript
node.js使用zlib模块进行数据压缩和解压操作示例
2020/02/12 Javascript
解决vue项目获取dom元素宽高总是不准确问题
2020/07/29 Javascript
详解vue v-model
2020/08/31 Javascript
[49:31]DOTA2-DPC中国联赛 正赛 Elephant vs LBZS BO3 第二场 1月29日
2021/03/11 DOTA
在主机商的共享服务器上部署Django站点的方法
2015/07/22 Python
Python实现带百分比的进度条
2016/06/28 Python
python3监控CentOS磁盘空间脚本
2018/06/21 Python
python调用百度REST API实现语音识别
2018/08/30 Python
python判断数字是否是超级素数幂
2018/09/27 Python
Tensorflow 自定义loss的情况下初始化部分变量方式
2020/01/06 Python
一款纯css3实现的圆形旋转分享按钮旋转角度可自己调整
2014/09/02 HTML / CSS
毕业生精彩的自我评价分享
2013/10/06 职场文书
2014年度党员自我评议
2014/09/13 职场文书
2014乡镇班子个人对照检查材料思想汇报
2014/09/26 职场文书
计算机考试作弊检讨书1000字
2015/01/01 职场文书
水电工岗位职责
2015/02/14 职场文书
葬礼主持词
2015/07/02 职场文书