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中atexit模块的基本使用示例
Jul 08 Python
Python实现随机选择元素功能
Sep 14 Python
基于Python函数的作用域规则和闭包(详解)
Nov 29 Python
浅谈numpy数组的几种排序方式
Dec 15 Python
Python3爬虫学习之应对网站反爬虫机制的方法分析
Dec 12 Python
Python3.5基础之变量、数据结构、条件和循环语句、break与continue语句实例详解
Apr 26 Python
Python 字符串类型列表转换成真正列表类型过程解析
Aug 26 Python
Django Model中字段(field)的各种选项说明
May 19 Python
Django实现后台上传并显示图片功能
May 29 Python
python 元组的使用方法
Jun 09 Python
python关于倒排列的知识点总结
Oct 13 Python
python之基数排序的实现
Jul 26 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
超神学院:天使彦公认最美的三个视角,网友:我的天使快下凡吧!
2020/03/02 国漫
我常用的几个类
2006/10/09 PHP
PHP开发工具ZendStudio下Xdebug工具使用说明详解
2013/11/11 PHP
PHP实现找出有序数组中绝对值最小的数算法分析
2017/08/07 PHP
PHP实现用户登录的案例代码
2018/05/10 PHP
颜色选择器 Color Picker,IE,Firefox,Opera,Safar
2010/11/25 Javascript
基于jquery实现的鼠标拖拽元素复制并写入效果
2011/08/23 Javascript
js弹出窗口之弹出层的小例子
2013/06/17 Javascript
LABjs、RequireJS、SeaJS的区别
2014/03/04 Javascript
javascript控制在光标位置插入文字适合表情的插入
2014/06/09 Javascript
js使用cookie记录用户名的方法
2015/11/26 Javascript
JavaScript中Window对象的属性及事件
2015/12/25 Javascript
JavaScript实现打开链接页面的方式汇总
2016/06/02 Javascript
js事件驱动机制 浏览器兼容处理方法
2016/07/23 Javascript
jQuery 遍历map()方法详解
2016/11/04 Javascript
JavaScript订单操作小程序完整版
2017/06/23 Javascript
Sublime Text新建.vue模板并高亮(图文教程)
2017/10/26 Javascript
Vue表单及表单绑定方法
2018/09/04 Javascript
详解vue 项目白屏解决方案
2018/10/31 Javascript
如何使用Node.js爬取任意网页资源并输出PDF文件到本地
2019/06/17 Javascript
vue 项目打包时样式及背景图片路径找不到的解决方式
2019/11/12 Javascript
javascript canvas检测小球碰撞
2020/04/17 Javascript
浅谈vue权限管理实现及流程
2020/04/23 Javascript
Python使用Socket(Https)Post登录百度的实现代码
2012/05/18 Python
python操作数据库之sqlite3打开数据库、删除、修改示例
2014/03/13 Python
python实现遍历文件夹修改文件后缀
2018/08/28 Python
python保存二维数组到txt文件中的方法
2018/11/15 Python
Django REST framework视图的用法
2019/01/16 Python
Python中最好用的命令行参数解析工具(argparse)
2019/08/23 Python
html5 浏览器支持 如何让所有的浏览器都支持HTML5标签样式
2012/12/07 HTML / CSS
纠风工作实施方案
2014/03/15 职场文书
小学三年级学生评语
2014/04/22 职场文书
满月酒邀请函
2015/01/30 职场文书
民事诉讼代理词
2015/05/25 职场文书
《雪地里的小画家》教学反思
2016/02/16 职场文书
nginx配置文件使用环境变量的操作方法
2021/06/02 Servers