Python配置文件解析模块ConfigParser使用实例


Posted in Python onApril 13, 2015

一、ConfigParser简介

ConfigParser 是用来读取配置文件的包。配置文件的格式如下:中括号“[ ]”内包含的为section。section 下面为类似于key-value 的配置内容。

 [db]

 db_host = 127.0.0.1

 db_port = 22

 db_user = root

 db_pass = rootroot

 

 [concurrent]

 thread = 10

 processor = 20

中括号“[ ]”内包含的为section。紧接着section 为类似于key-value 的options 的配置内容。
 
二、ConfigParser 初始工作

使用ConfigParser 首选需要初始化实例,并读取配置文件:

 cf = ConfigParser.ConfigParser()

 cf.read("配置文件名")

三、ConfigParser 常用方法

1. 获取所有sections。也就是将配置文件中所有“[ ]”读取到列表中:

 s = cf.sections()

 print 'section:', s

将输出(以下将均以简介中配置文件为例):
 section: ['db', 'concurrent']

2. 获取指定section 的options。即将配置文件某个section 内key 读取到列表中:
 o = cf.options("db")

 print 'options:', o

将输出:
 options: ['db_host', 'db_port', 'db_user', 'db_pass']

3. 获取指定section 的配置信息。
 v = cf.items("db")

 print 'db:', v

将输出:
 db: [('db_host', '127.0.0.1'), ('db_port', '22'), ('db_user', 'root'), ('db_pass', 'rootroot')]

4. 按照类型读取指定section 的option 信息。
同样的还有getfloat、getboolean。
 #可以按照类型读取出来

 db_host = cf.get("db", "db_host")

 db_port = cf.getint("db", "db_port")

 db_user = cf.get("db", "db_user")

 db_pass = cf.get("db", "db_pass")

 

 # 返回的是整型的

 threads = cf.getint("concurrent", "thread")

 processors = cf.getint("concurrent", "processor")

 

 print "db_host:", db_host

 print "db_port:", db_port

 print "db_user:", db_user

 print "db_pass:", db_pass

 print "thread:", threads

 print "processor:", processors

将输出:
 db_host: 127.0.0.1

 db_port: 22

 db_user: root

 db_pass: rootroot

 thread: 10

 processor: 20

5. 设置某个option 的值。(记得最后要写回)
 cf.set("db", "db_pass", "zhaowei")

 cf.write(open("test.conf", "w"))

6.添加一个section。(同样要写回)
 cf.add_section('liuqing')

 cf.set('liuqing', 'int', '15')

 cf.set('liuqing', 'bool', 'true')

 cf.set('liuqing', 'float', '3.1415')

 cf.set('liuqing', 'baz', 'fun')

 cf.set('liuqing', 'bar', 'Python')

 cf.set('liuqing', 'foo', '%(bar)s is %(baz)s!')

 cf.write(open("test.conf", "w"))

7. 移除section 或者option 。(只要进行了修改就要写回的哦)
 cf.remove_option('liuqing','int')

 cf.remove_section('liuqing')

 cf.write(open("test.conf", "w"))
#!/usr/bin/env python

from ConfigParser import ConfigParser

CONFIGFILE="f.txt"

config=ConfigParser()

config.read(CONFIGFILE)

print config.get('messages','greeting')

radius=input(config.get('messages','questions')+' ')

print config.get('messages','result')

print config.getfloat('numbers','pi')*radius**2
s=config.sections()

print'section: ',s

o=config.options('messages')

print'messages option: ',o

v=config.items("messages")

print'message de xinxi: ',v
config.add_section('liuyang1')

config.set('liuyang1','int','15')

config.set('liuyang'1,'hhhh','hello world')

config.write(open("f.txt","w"))

print config.get('liuyang1','int')

print config.get('liuyang1','hhhh')

#!/usr/bin/env python

import ConfigParser

import sys

config=ConfigParser.ConfigParser()

config.add_section("book1")

config.set("book1","title","hello world")

config.set("book1","aut","log")

config.write(open("f.txt","w"))
Python 相关文章推荐
python 切片和range()用法说明
Mar 24 Python
Python时间获取及转换知识汇总
Jan 11 Python
python 列表删除所有指定元素的方法
Apr 19 Python
python 检查是否为中文字符串的方法
Dec 28 Python
关于Pycharm无法debug问题的总结
Jan 19 Python
pyqt 实现在Widgets中显示图片和文字的方法
Jun 13 Python
pandas 时间格式转换的实现
Jul 06 Python
python opencv实现信用卡的数字识别
Jan 12 Python
解决Python3.8用pip安装turtle-0.0.2出现错误问题
Feb 11 Python
django自定义非主键自增字段类型详解(auto increment field)
Mar 30 Python
Python使用正则表达式实现爬虫数据抽取
Aug 17 Python
Python djanjo之csrf防跨站攻击实验过程
May 14 Python
深入Python函数编程的一些特性
Apr 13 #Python
Python命令行参数解析模块getopt使用实例
Apr 13 #Python
Python中文件操作简明介绍
Apr 13 #Python
Python单元测试框架unittest简明使用实例
Apr 13 #Python
进一步了解Python中的XML 工具
Apr 13 #Python
Python中的模块和包概念介绍
Apr 13 #Python
Python多线程编程简单介绍
Apr 13 #Python
You might like
推荐几款用 Sublime Text 开发 Laravel 所用到的插件
2014/10/30 PHP
php自定义时间转换函数示例
2016/12/07 PHP
PHP封装的非对称加密RSA算法示例
2018/05/28 PHP
Laravel中9个不经常用的小技巧汇总
2019/04/16 PHP
javascript 动态加载 css 方法总结
2009/07/11 Javascript
不同浏览器对回车提交表单的处理办法
2010/02/13 Javascript
Javascript计算两个marker之间的距离(Google Map V3)
2013/04/26 Javascript
setTimeout()递归调用不加引号出错的解决方法
2014/09/05 Javascript
JavaScript通过join函数连接数组里所有元素的方法
2015/03/20 Javascript
AngularJS中实现显示或隐藏动画效果的方式总结
2015/12/31 Javascript
用jquery快速解决IE输入框不能输入的问题
2016/10/04 Javascript
JS中如何实现复选框全选功能
2016/12/19 Javascript
详解JS中定时器setInterval和setTImeout的this指向问题
2017/01/06 Javascript
angularjs实现上拉加载和下拉刷新数据功能
2017/06/12 Javascript
canvas基础绘制-绚丽倒计时的实例
2017/09/17 Javascript
微信小程序 行的删除和增加操作实现详解
2019/09/29 Javascript
javascript实现fetch请求返回的统一拦截
2019/12/22 Javascript
python访问sqlserver示例
2014/02/10 Python
python打开url并按指定块读取网页内容的方法
2015/04/29 Python
python开发之tkinter实现图形随鼠标移动的方法
2015/11/11 Python
Python开发如何在ubuntu 15.10 上配置vim
2016/01/25 Python
Python3.6正式版新特性预览
2016/12/15 Python
Python中交换两个元素的实现方法
2018/06/29 Python
python斐波那契数列的计算方法
2018/09/27 Python
python实现诗歌游戏(类继承)
2019/02/26 Python
PyTorch预训练的实现
2019/09/18 Python
Python collections中的双向队列deque简单介绍详解
2019/11/04 Python
个人简历自荐信
2013/12/05 职场文书
电子商务专业毕业生求职信
2014/06/12 职场文书
酒会邀请函
2015/01/31 职场文书
经典爱情感言
2015/08/03 职场文书
办公室管理规章制度
2015/08/04 职场文书
学生病假条怎么写
2015/08/17 职场文书
大学社团活动总结怎么写
2019/06/21 职场文书
选择比努力更重要?这是长期以来对“努力”的最大误解
2019/07/12 职场文书
教你使用Pandas直接核算Excel中快递费用
2021/05/12 Python