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

[经验分享] 【转载】Python ConfigParser的使用

[复制链接]

尚未签到

发表于 2015-4-20 09:20:35 | 显示全部楼层 |阅读模式
  来源: http://zhangjunhd.blog.iyunv.com/113473/348863
  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将内容写入配置文件。

3.基本例子
test.conf

  • [sec_a]
  • a_key1 = 20
  • a_key2 = 10

  • [sec_b]
  • b_key1 = 121
  • b_key2 = b_value2
  • b_key3 = $r
  • b_key4 = 127.0.0.1
  parse_test_conf.py

  • import ConfigParser

  • cf = ConfigParser.ConfigParser()

  • #read config
  • cf.read("test.conf")

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

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

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

  • #read by type
  • str_val = cf.get("sec_a", "a_key1")
  • int_val = cf.getint("sec_a", "a_key2")

  • print "value for sec_a's a_key1:", str_val
  • print "value for sec_a's a_key2:", int_val

  • #write config
  • #update value
  • cf.set("sec_b", "b_key3", "new-$r")
  • #set a new value
  • cf.set("sec_b", "b_newkey", "new-value")
  • #create a new section
  • cf.add_section('a_new_section')
  • cf.set('a_new_section', 'new_key', 'new_value')

  • #write back to configure file
  • cf.write(open("test.conf", "w"))
  
得到终端输出:
sections: ['sec_b', 'sec_a']
options: ['a_key1', 'a_key2']
sec_a: [('a_key1', "i'm value"), ('a_key2', '22')]
value for sec_a's a_key1: i'm value
value for sec_a's a_key2: 22
更新后的test.conf

  • [sec_b]
  • b_newkey = new-value
  • b_key4 = 127.0.0.1
  • b_key1 = 121
  • b_key2 = b_value2
  • b_key3 = new-$r

  • [sec_a]
  • a_key1 = i'm value
  • a_key2 = 22

  • [a_new_section]
  • new_key = new_value
  
4.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-58660-1-1.html 上篇帖子: 时间同步小工具(Python + Windows Service + NSIS) 下篇帖子: python基础学习笔记(二)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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