Python中使用ConfigParser解析ini配置文件实例


Posted in Python onAugust 30, 2014

ini文件是windows中经常使用的配置文件,主要的格式为:

[Section1]

option1 : value1

option2 : value2

python提供了一个简单的模块ConfigParser可以用来解析类似这种形式的文件。对于ConfigParser模块可以解析key:value和key=value这样的类型,对于#和;开头的行将会自动忽视掉。相当于注释行。常用的函数:
ConfigParser.RawConfigParser()
RawConfigParser Object的操作有:
.sections() : 返回所有可用的section 

.addsection(sectionname) :添加section 

.set(sectionname, optionname, optionvalue): 添加option 

.hassection(sectionname) :判断 

.options(sectionname) : 返回section下可用的option 

.hasoption(sectionname, optionname) : 判断 

.read(filename) : 读取文件 

.wrie(filename) : 将RawConfigParser对象写到文件中 

.get(sectionname, optionname) : 获取值, 默认的是返回string类型 

.getfloat, .getint, .getboolean : 获取不同类型的返回值,参数和get的参数一样 

.items(sectionname) :列出section下的所有key:value 

.remove(sectionname) :删除section 

.remove(sectionname, option_name) : 删除section下的某个option

Demo -- 生成文件
$ cat ini_demo.py

# -*- coding:utf-8 -*-
import ConfigParser
def gen_ini():

    ftest = open('test','w')

    config_write = ConfigParser.RawConfigParser()

    config_write.add_section('Section_a')

    config_write.add_section('Section_b')

    config_write.add_section('Section_c')

    config_write.set('Section_a','option_a1','apple_a1')

    config_write.set('Section_a','option_a2','banana_a2')

    config_write.set('Section_b','option_b1','apple_b1')

    config_write.set('Section_b','option_b2','banana_b2')

    config_write.set('Section_c','option_c1','apple_c1')

    config_write.set('Section_c','option_c2','banana_c2')   

    config_write.write(ftest)

    ftest.close()
if __name__ == "__main__":

    gen_ini()

最后生成的文件为:
$ cat test

[Section_a]

option_a1 = apple_a1

option_a2 = banana_a2
[Section_c]

option_c2 = banana_c2

option_c1 = apple_c1
[Section_b]

option_b1 = apple_b1

option_b2 = banana_b2

Demo -- 读取文件
def read_ini():

    config_read = ConfigParser.RawConfigParser()

    config_read.read('test')

    print config_read.sections()

    print config_read.items('Section_a')

    print config_read.get('Section_a','option_a1')

最后的结果为:
['Section_a', 'Section_c', 'Section_b']

[('option_a2', 'banana_a2'), ('option_a1', 'apple_a1')]

apple_a1
Python 相关文章推荐
python高并发异步服务器核心库forkcore使用方法
Nov 26 Python
Django查找网站项目根目录和对正则表达式的支持
Jul 15 Python
在Python的Django框架中调用方法和处理无效变量
Jul 15 Python
Python可变参数*args和**kwargs用法实例小结
Apr 27 Python
python 使用sys.stdin和fileinput读入标准输入的方法
Oct 17 Python
Python关于excel和shp的使用在matplotlib
Jan 03 Python
Django中如何使用sass的方法步骤
Jul 09 Python
django+echart数据动态显示的例子
Aug 12 Python
python隐藏类中属性的3种实现方法
Dec 19 Python
Python实现自动打开电脑应用的示例代码
Apr 17 Python
python小白学习包管理器pip安装
Jun 09 Python
Pycharm操作Git及GitHub的步骤详解
Oct 27 Python
python进阶教程之动态类型详解
Aug 30 #Python
python进阶教程之异常处理
Aug 30 #Python
python进阶教程之函数对象(函数也是对象)
Aug 30 #Python
python进阶教程之循环对象
Aug 30 #Python
python进阶教程之循环相关函数range、enumerate、zip
Aug 30 #Python
python进阶教程之函数参数的多种传递方法
Aug 30 #Python
python进阶教程之模块(module)介绍
Aug 30 #Python
You might like
php 无限级分类学习参考之对ecshop无限级分类的解析 带详细注释
2010/03/23 PHP
php之readdir函数用法实例
2014/11/13 PHP
TP3.2框架分页相关实现方法分析
2020/06/03 PHP
我见过最全的个人js加解密功能页面
2007/12/12 Javascript
javascript全局变量封装模块实现代码
2012/11/28 Javascript
js判断设备是否为PC并调整图片大小
2014/02/12 Javascript
extJS中常用的4种Ajax异步提交方式
2014/03/07 Javascript
Nodejs全局安装和本地安装的不同之处
2016/07/04 NodeJs
微信小程序 生命周期和页面的生命周期详细介绍
2017/01/19 Javascript
Vue.js基础指令实例讲解(各种数据绑定、表单渲染大总结)
2017/07/03 Javascript
webpack中CommonsChunkPlugin详细教程(小结)
2017/11/09 Javascript
Node.Js中实现端口重用原理详解
2018/05/03 Javascript
微信{"errcode":48001,"errmsg":"api unauthorized, hints: [ req_id: 1QoCla0699ns81 ]"}
2018/10/12 Javascript
如何检查一个对象是否为空
2019/04/11 Javascript
在layui下对元素进行事件绑定的实例
2019/09/06 Javascript
解决Vue打包上线之后部分CSS不生效的问题
2019/11/12 Javascript
详细分析vue表单数据的绑定
2020/07/20 Javascript
python使用marshal模块序列化实例
2014/09/25 Python
python实现QQ邮箱/163邮箱的邮件发送
2019/01/22 Python
学习和使用python的13个理由
2019/07/30 Python
python json 递归打印所有json子节点信息的例子
2020/02/27 Python
使用tensorflow实现VGG网络,训练mnist数据集方式
2020/05/26 Python
解决c++调用python中文乱码问题
2020/07/29 Python
pycharm 复制代码出现空格的解决方式
2021/01/15 Python
详解Sticky Footer 绝对底部的两种套路
2017/11/03 HTML / CSS
澳大利亚领先的在线礼品网站:Gifts Australia
2020/08/15 全球购物
Cynthia Rowley官网:全球领先的生活方式品牌
2020/10/27 全球购物
Java面试题:说出如下代码的执行结果
2015/10/30 面试题
学院书画协会部门岗位职责
2013/12/01 职场文书
优秀部门获奖感言
2014/02/14 职场文书
青春寄语大全
2014/04/09 职场文书
区域销售主管岗位职责
2014/06/15 职场文书
医院合作协议书
2014/08/19 职场文书
学校交通安全责任书
2014/08/25 职场文书
幼师辞职信范文
2015/02/27 职场文书
闪闪红星观后感
2015/06/08 职场文书