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之玩转字符串(1)
Sep 14 Python
讲解Python中fileno()方法的使用
May 24 Python
Python爬虫爬验证码实现功能详解
Apr 14 Python
Python实现二维有序数组查找的方法
Apr 27 Python
基于python实现学生管理系统
Oct 17 Python
python多线程下信号处理程序示例
May 31 Python
python3.7 sys模块的具体使用
Jul 22 Python
使用Python刷淘宝喵币(低阶入门版)
Oct 30 Python
Python实现加密接口测试方法步骤详解
Jun 05 Python
简述python Scrapy框架
Aug 17 Python
python在CMD界面读取excel所有数据的示例
Sep 28 Python
浅谈Python类的单继承相关知识
May 12 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 7 vs HHVM 多角度比较
2016/02/14 PHP
Jquery乱码的一次解决过程 图解教程
2010/02/20 Javascript
javascript学习之闭包分析
2010/12/02 Javascript
jQuery插件-jRating评分插件源码分析及使用方法
2012/12/28 Javascript
node.js 开发指南 ? Node.js 连接 MySQL 并进行数据库操作
2014/07/29 Javascript
jQuery中detach()方法用法实例
2014/12/25 Javascript
解决jquery中动态新增的元素节点无法触发事件问题的两种方法
2015/10/30 Javascript
javascript实现获取指定精度的上传文件的大小简单实例
2016/10/25 Javascript
vue2里面ref的具体使用方法
2017/10/27 Javascript
nodejs结合Socket.IO实现的即时通讯功能详解
2018/01/12 NodeJs
jQuery实现input输入框获取焦点与失去焦点时提示的消失与显示功能示例
2019/05/27 jQuery
javascript系统时间设置操作示例
2019/06/17 Javascript
微信小程序入口场景的问题集合与相关解决方法
2019/06/26 Javascript
微信小程序与公众号实现数据互通的方法
2019/07/25 Javascript
微信小程序获取公众号文章列表及显示文章的示例代码
2020/03/10 Javascript
浅谈vue-props的default写不写有什么区别
2020/08/09 Javascript
Vue自定义多选组件使用详解
2020/09/08 Javascript
[09:37]DOTA2卡尔工作室 英雄介绍圣堂刺客篇
2013/06/13 DOTA
[01:10]DOTA2英雄背景故事第四期之混沌法则混沌骑士
2020/07/16 DOTA
用Python实现一个简单的能够上传下载的HTTP服务器
2015/05/05 Python
python使用tensorflow保存、加载和使用模型的方法
2018/01/31 Python
python中的插值 scipy-interp的实现代码
2018/07/23 Python
python针对mysql数据库的连接、查询、更新、删除操作示例
2019/09/11 Python
如何基于Python批量下载音乐
2019/11/11 Python
利用Python制作动态排名图的实现代码
2020/04/09 Python
Python读取xlsx数据生成图标代码实例
2020/08/12 Python
python+django+selenium搭建简易自动化测试
2020/08/19 Python
CSS3弹性盒模型flex box快速入门心得(必看篇)
2016/05/24 HTML / CSS
通过一张图教会你CSS3倒影的实现
2017/09/26 HTML / CSS
微信端html5页面调用分享接口示例
2018/03/14 HTML / CSS
精细化工应届生求职信
2013/11/17 职场文书
商务日语毕业生自荐信
2013/11/23 职场文书
招股说明书范本
2014/05/06 职场文书
机械工程师岗位职责
2014/06/16 职场文书
整顿机关作风心得体会
2014/09/10 职场文书
基层工作经历证明
2015/06/19 职场文书