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 相关文章推荐
压缩包密码破解示例分享(类似典破解)
Jan 17 Python
Python编程产生非均匀随机数的几种方法代码分享
Dec 13 Python
pycharm恢复默认设置或者是替换pycharm的解释器实例
Oct 29 Python
Python线性拟合实现函数与用法示例
Dec 13 Python
python数据挖掘需要学的内容
Jun 23 Python
linux环境下Django的安装配置详解
Jul 22 Python
Python生命游戏实现原理及过程解析(附源代码)
Aug 01 Python
python如果快速判断数字奇数偶数
Nov 13 Python
pytorch使用tensorboardX进行loss可视化实例
Feb 24 Python
Python中bisect的用法及示例详解
Jul 20 Python
Python爬取微信小程序通用方法代码实例详解
Sep 29 Python
python海龟绘图之画国旗实例代码
Nov 11 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中使用Oracle数据库(2)
2006/10/09 PHP
PHP也能干大事 随机函数
2015/04/14 PHP
PHP将URL转换成短网址的算法分享
2016/09/13 PHP
php curl常用的5个经典例子
2017/01/20 PHP
laravel 5.1下php artisan migrate的使用注意事项总结
2017/06/07 PHP
PHP实现时间日期友好显示实现代码
2019/09/08 PHP
Dom 是什么的详细说明
2010/10/25 Javascript
Jquery实现列表(隔行换色,全选,鼠标滑过当前行)效果实例
2013/06/09 Javascript
Ext4.2的Ext.grid.plugin.RowExpander无法触发事件解决办法
2014/08/15 Javascript
用js提交表单解决一个页面有多个提交按钮的问题
2014/09/01 Javascript
Javascript验证方法大全
2015/09/21 Javascript
基于JQuery实现图片轮播效果(焦点图)
2016/02/02 Javascript
JavaScript位移运算符(无符号) >>> 三个大于号 的使用方法详解
2016/03/31 Javascript
bootstrap-datetimepicker实现只显示到日期的方法
2016/11/25 Javascript
vue-dialog的弹出层组件
2020/05/25 Javascript
JS实现的添加弹出层并完成锁屏操作示例
2017/04/07 Javascript
小程序使用分包的示例代码
2020/03/23 Javascript
javascript绘制简单钟表效果
2020/04/07 Javascript
vue+element table表格实现动态列筛选的示例代码
2021/01/14 Vue.js
[01:14]DOTA2 7.22版本新增神杖效果展示(智力英雄篇)
2019/05/29 DOTA
Python多线程threading和multiprocessing模块实例解析
2018/01/29 Python
pandas.DataFrame的pivot()和unstack()实现行转列
2019/07/06 Python
Python 继承,重写,super()调用父类方法操作示例
2019/09/29 Python
使用Python画出小人发射爱心的代码
2019/11/23 Python
利用Python将图片中扭曲矩形的复原
2020/09/07 Python
Nike西班牙官方网站:Nike.com (ES)
2017/10/30 全球购物
房地产财务管理制度
2014/02/02 职场文书
收银出纳员岗位职责
2014/02/23 职场文书
爱祖国演讲稿
2014/05/04 职场文书
员工安全承诺书
2014/05/22 职场文书
承诺书格式
2014/06/03 职场文书
小学教师师德师风演讲稿
2014/08/22 职场文书
2015年创先争优工作总结
2015/05/23 职场文书
python中super()函数的理解与基本使用
2021/08/30 Python
MySQL面试题讲解之如何设置Hash索引
2021/11/01 MySQL
Redis如何使用乐观锁(CAS)保证数据一致性
2022/03/25 Redis