设为首页 收藏本站
查看: 1265|回复: 0

[经验分享] python读conf配置文件--ConfigParser

[复制链接]

尚未签到

发表于 2015-12-15 13:18:22 | 显示全部楼层 |阅读模式
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"))
  
3) Python的ConfigParser Module 中定义了3个类对INI文件进行操作。分别是RawConfigParser、ConfigParser、SafeConfigParser。 RawCnfigParser是最基础的INI文件读取类,ConfigParser、SafeConfigParser支持对%(value)s变量的 解析。

设定配置文件test2.conf



  • [portal]

  • url = http://%(host)s:%(port)s/Portal
  • host = localhost
  • port = 8080

使用RawConfigParser:



  • import ConfigParser


  • cf = ConfigParser.RawConfigParser()

  • print "use RawConfigParser() read"
  • cf.read("test2.conf")
  • print cf.get("portal", "url")

  • print "use RawConfigParser() write"
  • cf.set("portal", "url2", "%(host)s:%(port)s")
  • print cf.get("portal", "url2")

得到终端输出:



  • use RawConfigParser() read

  • http://%(host)s:%(port)s/Portal
  • use RawConfigParser() write
  • %(host)s:%(port)s

改用ConfigParser:



  • import ConfigParser


  • cf = ConfigParser.ConfigParser()

  • print "use ConfigParser() read"
  • cf.read("test2.conf")
  • print cf.get("portal", "url")

  • print "use ConfigParser() write"
  • cf.set("portal", "url2", "%(host)s:%(port)s")
  • print cf.get("portal", "url2")

得到终端输出:



  • use ConfigParser() read

  • http://localhost:8080/Portal
  • use ConfigParser() write
  • localhost:8080

改用SafeConfigParser:



  • import ConfigParser


  • cf = ConfigParser.SafeConfigParser()

  • print "use SafeConfigParser() read"
  • cf.read("test2.conf")
  • print cf.get("portal", "url")

  • print "use SateConfigParser() write"
  • cf.set("portal", "url2", "%(host)s:%(port)s")
  • print cf.get("portal", "url2")

得到终端输出(效果同ConfigParser):



  • use SafeConfigParser() read

  • http://localhost:8080/Portal
  • use SateConfigParser() write
  • localhost:8080

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-151555-1-1.html 上篇帖子: python 学习手册第四版 学习笔记 下篇帖子: python核心编程第六章第八题
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表