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 相关文章推荐
下载给定网页上图片的方法
Feb 18 Python
Python合并字符串的3种方法
May 21 Python
python使用arcpy.mapping模块批量出图
Mar 06 Python
python使用xpath中遇到:到底是什么?
Jan 04 Python
用python生成1000个txt文件的方法
Oct 25 Python
在ubuntu16.04中将python3设置为默认的命令写法
Oct 31 Python
Pytorch的mean和std调查实例
Jan 02 Python
使用Python脚本从文件读取数据代码实例
Jan 19 Python
在tensorflow中实现屏蔽输出的log信息
Feb 04 Python
linux centos 7.x 安装 python3.x 替换 python2.x的过程解析
Dec 14 Python
python使用pygame创建精灵Sprite
Apr 06 Python
OpenCV项目实践之停车场车位实时检测
Apr 11 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
咖啡界又出新概念,无需咖啡豆的分子咖啡
2021/03/03 咖啡文化
php 中的4种标记风格介绍
2012/05/10 PHP
php分割合并两个字符串的函数实例
2015/06/19 PHP
Thinkphp关闭缓存的方法
2015/06/26 PHP
PHP实现的自定义数组排序函数与排序类示例
2016/11/18 PHP
PHP面向对象类型约束用法分析
2019/06/12 PHP
prototype 1.5 & scriptaculous 1.6.1 学习笔记
2006/09/07 Javascript
php上传图片并给图片打上透明水印的代码
2010/06/07 Javascript
基于jQuery的js分页代码
2010/06/10 Javascript
javascript 词法作用域和闭包分析说明
2010/08/12 Javascript
Jquery 过滤器(first,last,not,even,odd)的使用
2014/01/22 Javascript
Flash图片上传组件 swfupload使用指南
2015/03/14 Javascript
通过javascript进行UTF-8编码的实现方法
2016/06/27 Javascript
Angular2 路由问题修复详解
2017/03/01 Javascript
vue项目每30秒刷新1次接口的实现方法
2018/12/04 Javascript
JS实现的获取银行卡号归属地及银行卡类型操作示例
2019/01/08 Javascript
vue编写简单的购物车功能
2021/01/08 Vue.js
Python中多线程thread与threading的实现方法
2014/08/18 Python
Python中为什么要用self探讨
2015/04/14 Python
Python批量更改文件名的实现方法
2017/10/29 Python
Python 多个图同时在不同窗口显示的实现方法
2019/07/07 Python
对django后台admin下拉框进行过滤的实例
2019/07/26 Python
python实现猜拳小游戏
2020/04/05 Python
Python+Dlib+Opencv实现人脸采集并表情判别功能的代码
2020/07/01 Python
Python中lru_cache的使用和实现详解
2021/01/25 Python
美国最大的香水出口:FragranceX.com
2017/11/04 全球购物
全球独特生活方式产品和礼品购物网站:AHAlife
2018/09/18 全球购物
什么是WEB控件?使用WEB控件有哪些优势?
2012/01/21 面试题
为什么要做架构设计
2015/07/08 面试题
儿科护士实习自我鉴定
2013/10/17 职场文书
考试退步检讨书
2014/01/15 职场文书
安全教育月活动总结
2014/05/05 职场文书
教师三严三实心得体会
2014/10/11 职场文书
风之谷观后感
2015/06/11 职场文书
python开发制作好看的时钟效果
2022/05/02 Python
JavaScript正则表达式实现注册信息校验功能
2022/05/30 Java/Android