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持久性管理pickle模块详细介绍
Feb 18 Python
fastcgi文件读取漏洞之python扫描脚本
Apr 23 Python
python基本语法练习实例
Sep 19 Python
numpy数组拼接简单示例
Dec 15 Python
Python图像处理之识别图像中的文字(实例讲解)
May 10 Python
Python数据分析matplotlib设置多个子图的间距方法
Aug 03 Python
python读取.mat文件的数据及实例代码
Jul 12 Python
浅谈Django QuerySet对象(模型.objects)的常用方法
Mar 28 Python
Django模板之基本的 for 循环 和 List内容的显示方式
Mar 31 Python
如何基于python对接钉钉并获取access_token
Apr 21 Python
pytorch中index_select()的用法详解
Jan 06 Python
Requests什么的通通爬不了的Python超强反爬虫方案!
May 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设计模式 php实现单例模式(singleton)
2015/12/07 PHP
tp5框架的增删改查操作示例
2019/10/31 PHP
jquery $.each 和for怎么跳出循环终止本次循环
2013/09/27 Javascript
纯js分页代码(简洁实用)
2013/11/05 Javascript
AngularJS使用ngMessages进行表单验证
2015/12/27 Javascript
JavaScript+html5 canvas绘制的圆弧荡秋千效果完整实例
2016/01/26 Javascript
javascript检查某个元素在数组中的索引值
2016/03/30 Javascript
js 定义对象数组(结合)多维数组方法
2016/07/27 Javascript
AngularJS ng-change 指令的详解及简单实例
2016/07/30 Javascript
浅谈jquery中使用canvas的问题
2016/10/10 Javascript
JS实现的五级联动菜单效果完整实例
2017/02/23 Javascript
nodejs制作爬虫实现批量下载图片
2017/05/19 NodeJs
详解vue中computed 和 watch的异同
2017/06/30 Javascript
基于jQuery.i18n实现web前端的国际化
2018/05/04 jQuery
javascript使用substring实现的展开与收缩文字功能示例
2019/06/17 Javascript
javascript中的闭包概念与用法实践分析
2019/07/26 Javascript
uni app仿微信顶部导航条功能
2019/09/17 Javascript
javascript单张多张图无缝滚动实例代码
2020/05/10 Javascript
[45:44]完美世界DOTA2联赛PWL S2 FTD vs PXG 第一场 11.27
2020/12/01 DOTA
布同 统计英文单词的个数的python代码
2011/03/13 Python
Python2 Selenium元素定位的实现(8种)
2019/02/25 Python
利用python如何在前程无忧高效投递简历
2019/05/07 Python
Python 实现Serial 与STM32J进行串口通讯
2019/12/18 Python
python实现的分层随机抽样案例
2020/02/25 Python
Python virtualenv虚拟环境实现过程解析
2020/04/18 Python
解决安装新版PyQt5、PyQT5-tool后打不开并Designer.exe提示no Qt platform plugin的问题
2020/04/24 Python
Python 整行读取文本方法并去掉readlines换行\n操作
2020/09/03 Python
CSS3 box-shadow属性实例详解
2020/06/19 HTML / CSS
奥地利顶级内衣丝袜品牌英国站:Wolford英国
2016/08/29 全球购物
哥伦比亚最大的网上商店:Linio哥伦比亚
2016/09/25 全球购物
Skyscanner波兰:廉价航班
2017/11/07 全球购物
新加坡鲜花速递/新加坡网上花店:Ferns N Petals
2020/08/29 全球购物
怎么可以提高数据库查询数据的速度
2014/06/28 面试题
大学生创业计划书的格式要求
2013/12/29 职场文书
住宅质量保证书
2014/04/29 职场文书
老兵退伍感言
2015/08/03 职场文书