注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

我的博客

 
 
 

日志

 
 
关于我

砍过人吸过粉站在路边接过吻 当过兵站过岗耍过流氓入过党 上过班下过岗打过领导得过奖

网易考拉推荐

python读conf配置文件--ConfigParser  

2012-09-12 18:03:23|  分类: python |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
发现python读写配置文件比较方便。

1) 基本的读取配置文件
     -read(filename) 直接读取ini文件内容
     -sections() 得到所有的section,并以列表的形式返回
     -options(section) 得到该section的所有option
     -items(section) 得到该section的所有键值对
     -get(section,option) 得到section中option的值,返回为string类型
     -getint(section,option) 得到section中option的值,返回为int类型,还有相应的getboolean()和getfloat() 函数。

2.基本的写入配置文件
     -add_section(section) 添加一个新的section
     -set( section, option, value) 对section中的option进行设置,需要调用write将内容写入配置文件。


配置文件如下:
[db]
db_port = 3306
db_user = root
db_host = 127.0.0.1
db_pass = xgmtest

[concurrent]
processor = 20
thread = 10


示例代码如下

#/usr/bin/python

import ConfigParser
import string, os, sys

cf = ConfigParser.ConfigParser()

cf.read("test.conf")

#return all section
secs = cf.sections()
print 'sections:', secs

opts = cf.options("db")
print 'options:', opts

kvs  = cf.items("db")
print 'db:', kvs

#read by type
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")

#read int
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


#modify one value and write to file
cf.set("db", "db_pass", "xgmtest")
cf.write(open("test.conf", "w"))









4.Python的ConfigParser Module 中定义了3个类对INI文件进行操作。分别是RawConfigParser、ConfigParser、SafeConfigParser。 RawCnfigParser是最基础的INI文件读取类,ConfigParser、SafeConfigParser支持对%(value)s变量的 解析。 
 
设定配置文件test2.conf
  1. [portal] 
  2. url = http://%(host)s:%(port)s/Portal 
  3. host = localhost 
  4. port = 8080 


使用RawConfigParser:

  1. import ConfigParser 
  2.  
  3. cf = ConfigParser.RawConfigParser() 
  4.  
  5. print "use RawConfigParser() read"
  6. cf.read("test2.conf"
  7. print cf.get("portal""url"
  8.  
  9. print "use RawConfigParser() write"
  10. cf.set("portal""url2""%(host)s:%(port)s"
  11. print cf.get("portal""url2"


得到终端输出:
use RawConfigParser() read 
http://%(host)s:%(port)s/Portal 
use RawConfigParser() write 
%(host)s:%(port)s

改用ConfigParser:

  1. import ConfigParser 
  2.  
  3. cf = ConfigParser.ConfigParser() 
  4.  
  5. print "use ConfigParser() read"
  6. cf.read("test2.conf"
  7. print cf.get("portal""url"
  8.  
  9. print "use ConfigParser() write"
  10. cf.set("portal""url2""%(host)s:%(port)s"
  11. print cf.get("portal""url2"


得到终端输出:
use ConfigParser() read 
http://localhost:8080/Portal 
use ConfigParser() write 
localhost:8080

改用SafeConfigParser:

  1. import ConfigParser 
  2.  
  3. cf = ConfigParser.SafeConfigParser() 
  4.  
  5. print "use SafeConfigParser() read"
  6. cf.read("test2.conf"
  7. print cf.get("portal""url"
  8.  
  9. print "use SateConfigParser() write"
  10. cf.set("portal""url2""%(host)s:%(port)s"
  11. print cf.get("portal""url2"


得到终端输出(效果同ConfigParser):
use SafeConfigParser() read 
http://localhost:8080/Portal 
use SateConfigParser() write 
localhost:8080

  评论这张
 
阅读(3138)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016