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线程的两种编程方式
Apr 14 Python
python基础教程之匿名函数lambda
Jan 17 Python
python3中str(字符串)的使用教程
Mar 23 Python
Python使用add_subplot与subplot画子图操作示例
Jun 01 Python
win7+Python3.5下scrapy的安装方法
Jul 31 Python
selenium+python自动化测试之多窗口切换
Jan 23 Python
Django中如何防范CSRF跨站点请求伪造攻击的实现
Apr 28 Python
Python通用函数实现数组计算的方法
Jun 13 Python
python如何使用jt400.jar包代码实例
Dec 20 Python
Django用户认证系统如何实现自定义
Nov 12 Python
Python基于爬虫实现全网搜索并下载音乐
Feb 14 Python
OpenCV绘制圆端矩形的示例代码
Aug 30 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
攻克CakePHP系列一 连接MySQL数据库
2008/10/22 PHP
php变量作用域的深入解析
2013/06/03 PHP
PHP超全局数组(Superglobals)介绍
2015/07/01 PHP
Yii框架视图、视图布局、视图数据块操作示例
2019/10/14 PHP
PHP rsa加密解密算法原理解析
2020/12/09 PHP
Js 中debug方式
2010/02/07 Javascript
js location.replace与location.reload的区别
2010/09/08 Javascript
dojo学习第二天 ajax异步请求之绑定列表
2011/08/29 Javascript
JS实现字体选色板实例代码
2013/11/20 Javascript
js读写cookie实现一个底部广告浮层效果的两种方法
2013/12/29 Javascript
基于NodeJS的前后端分离的思考与实践(一)全栈式开发
2014/09/26 NodeJs
jQuery中triggerHandler()方法用法实例
2015/01/19 Javascript
web前端开发JQuery常用实例代码片段(50个)
2015/08/28 Javascript
jQuery操作json常用方法示例
2017/01/04 Javascript
微信小程序 tabs选项卡效果的实现
2017/01/05 Javascript
React Native 使用Fetch发送网络请求的示例代码
2017/12/02 Javascript
angular4中引入echarts的方法示例
2019/01/29 Javascript
Vue生命周期activated之返回上一页不重新请求数据操作
2020/07/26 Javascript
解决vue项目运行提示Warnings while compiling.警告的问题
2020/09/18 Javascript
Python3基础之条件与循环控制实例解析
2014/08/13 Python
python网络编程之读取网站根目录实例
2014/09/30 Python
学习python之编写简单乘法口诀表实现代码
2016/02/27 Python
用Python写一个无界面的2048小游戏
2016/05/24 Python
Python多进程multiprocessing用法实例分析
2017/08/18 Python
Python实现的根据文件名查找数据文件功能示例
2018/05/02 Python
Python 中Django验证码功能的实现代码
2019/06/20 Python
Python的垃圾回收机制详解
2019/08/28 Python
解决更改AUTH_USER_MODEL后出现的问题
2020/05/14 Python
Python CSS选择器爬取京东网商品信息过程解析
2020/06/01 Python
HTML5中的Article和Section元素认识及使用
2013/03/22 HTML / CSS
HTML5新特性之type=file文件上传功能
2018/02/02 HTML / CSS
兰蔻法国官方网站:Lancôme法国
2020/02/22 全球购物
在子网210.27.48.21/30种有多少个可用地址?分别是什么?
2014/07/27 面试题
工厂门卫岗位职责
2013/11/25 职场文书
黄埔军校观后感
2015/06/10 职场文书
Python使用socket去实现TCP客户端和TCP服务端
2022/04/12 Python