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中的各种函数的使用
May 24 Python
python并发和异步编程实例
Nov 15 Python
Python实现分段线性插值
Dec 17 Python
Scrapy框架爬取西刺代理网免费高匿代理的实现代码
Feb 22 Python
解决Django Static内容不能加载显示的问题
Jul 28 Python
python制作英语翻译小工具代码实例
Sep 09 Python
Python解压 rar、zip、tar文件的方法
Nov 19 Python
Python基于pyecharts实现关联图绘制
Mar 27 Python
python实现从ftp上下载文件的实例方法
Jul 19 Python
jupyter notebook 写代码自动补全的实现
Nov 02 Python
聊聊基于pytorch实现Resnet对本地数据集的训练问题
Mar 25 Python
Python何绘制带有背景色块的折线图
Apr 23 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
不用数据库的多用户文件自由上传投票系统(2)
2006/10/09 PHP
功能强大的PHP图片处理类(水印、透明度、旋转)
2015/10/21 PHP
学习php设计模式 php实现抽象工厂模式
2015/12/07 PHP
PHP获取日期对应星期、一周日期、星期开始与结束日期的方法
2018/06/22 PHP
使用jQuery fancybox插件打造一个实用的数据传输模态弹出窗体
2013/01/15 Javascript
JavaScript定义类的几种方式总结
2014/01/06 Javascript
Node.js开发之访问Redis数据库教程
2015/01/14 Javascript
javascript与Python快速排序实例对比
2015/08/10 Javascript
javascript中日期函数new Date()的浏览器兼容性问题
2015/09/05 Javascript
你有必要知道的25个JavaScript面试题
2015/12/29 Javascript
jQuery布局组件EasyUI Layout使用方法详解
2017/02/28 Javascript
angular2 ng2-file-upload上传示例代码
2018/08/23 Javascript
浅谈angular2子组件的事件传递(任意组件事件传递)
2018/09/30 Javascript
js验证身份证号码记录的方法
2019/04/26 Javascript
Angular实现svg和png图片下载实现
2019/05/05 Javascript
vue elementUI 表单校验功能之数组多层嵌套
2019/06/04 Javascript
[50:01]Ti4 冒泡赛第二天 NEWBEE vs Titan
2014/07/15 DOTA
[45:32]Liquid vs LGD 2018国际邀请赛淘汰赛BO3 第二场 8.23
2018/08/24 DOTA
Python实现SVN的目录周期性备份实例
2015/07/17 Python
学习python类方法与对象方法
2016/03/15 Python
Python搜索引擎实现原理和方法
2017/11/27 Python
Python多线程编程之多线程加锁操作示例
2018/09/06 Python
解决python3 Pycharm上连接数据库时报错的问题
2018/12/03 Python
Python利用PyExecJS库执行JS函数的案例分析
2019/12/18 Python
Hotels.com台湾:饭店订房网
2017/09/06 全球购物
性能服装:HYLETE
2018/08/14 全球购物
英国时尚女装购物网站:Missguided
2018/08/23 全球购物
int *p=NULL和*p= NULL有什么区别
2014/10/23 面试题
村支部书记群众路线对照检查材料思想汇报
2014/10/08 职场文书
2014年后勤工作总结范文
2014/12/16 职场文书
汽车质检员岗位职责
2015/04/08 职场文书
保护环境的宣传语
2015/07/13 职场文书
Nginx解决前端访问资源跨域问题的方法详解
2021/03/31 Servers
python实现大文本文件分割成多个小文件
2021/04/20 Python
基于Go Int转string几种方式性能测试
2021/04/28 Golang
pytorch训练神经网络爆内存的解决方案
2021/05/22 Python