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实现基于HTTP文件传输实例
Nov 08 Python
Python实现MySQL操作的方法小结【安装,连接,增删改查等】
Jul 12 Python
关于django 数据库迁移(migrate)应该知道的一些事
May 27 Python
python生成密码字典的方法
Jul 06 Python
python3+opencv3识别图片中的物体并截取的方法
Dec 05 Python
Python数据可视化 pyecharts实现各种统计图表过程详解
Aug 15 Python
python实现扑克牌交互式界面发牌程序
Apr 22 Python
python:解析requests返回的response(json格式)说明
Apr 30 Python
Python中内建模块collections如何使用
May 27 Python
Python tkinter界面实现历史天气查询的示例代码
Aug 23 Python
详解python爬取弹幕与数据分析
Nov 14 Python
scrapy头部修改的方法详解
Dec 06 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
php使用fopen创建utf8编码文件的方法
2014/10/31 PHP
在jQuery中 关于json空对象筛选替换
2013/04/15 Javascript
原生javascript实现无间缝滚动示例
2014/01/28 Javascript
使用原生JS实现弹出层特效
2014/12/22 Javascript
jQuery中height()方法用法实例
2014/12/24 Javascript
jquery单选框radio绑定click事件实现方法
2015/01/14 Javascript
jQuery中extend()和fn.extend()方法详解
2015/06/03 Javascript
JavaScript中Number.MAX_VALUE属性的使用方法
2015/06/04 Javascript
深入探究使JavaScript动画流畅的一些方法
2015/06/30 Javascript
javascript跨域总结之window.name实现的跨域数据传输
2015/11/01 Javascript
jQuery 局部div刷新和全局刷新方法总结
2016/10/05 Javascript
JavaScript中双符号的运算详解
2017/03/12 Javascript
js中的事件委托或是事件代理使用详解
2017/06/23 Javascript
vue 粒子特效的示例代码
2017/09/19 Javascript
angular.js4使用 RxJS 处理多个 Http 请求
2017/09/23 Javascript
基于vue实现一个禅道主页拖拽效果
2019/05/27 Javascript
js实现带搜索功能的下拉框
2020/01/11 Javascript
原生JS实现天气预报
2020/06/16 Javascript
微信小程序swiper组件实现抖音翻页切换视频功能的实例代码
2020/06/24 Javascript
基于Electron实现桌面应用开发代码实例
2020/07/07 Javascript
[52:29]DOTA2上海特级锦标赛主赛事日 - 2 胜者组第一轮#3Secret VS OG第三局
2016/03/03 DOTA
[03:06]3分钟带你回顾DOTA2完美盛典&完美大师赛
2017/12/06 DOTA
400多行Python代码实现了一个FTP服务器
2012/05/10 Python
python实现系统状态监测和故障转移实例方法
2013/11/18 Python
Python基于socket实现简单的即时通讯功能示例
2018/01/16 Python
Python设计模式之原型模式实例详解
2019/01/18 Python
解决Python3 抓取微信账单信息问题
2019/07/19 Python
python点击鼠标获取坐标(Graphics)
2019/08/10 Python
python解释器pycharm安装及环境变量配置教程图文详解
2020/02/26 Python
Idea安装python显示无SDK问题解决方案
2020/08/12 Python
Python使用xpath实现图片爬取
2020/09/16 Python
前端使用canvas生成盲水印的加密解密的实现
2020/12/16 HTML / CSS
Java的类可以定义为Protected或者Private得吗
2015/09/25 面试题
如何使用PostgreSQL进行中文全文检索
2021/05/27 PostgreSQL
《群青的幻想曲》京力秋树角色PV公开
2022/04/08 日漫
Windows和Linux上部署Golang并运行程序
2022/04/22 Servers