zoukankan      html  css  js  c++  java
  • Python模块: ConfigParser

    在程序中使用配置文件来灵活的配置一些参数是一件很常见的事情,配置文件的解析并不复杂,在python里更是如此,在官方发布的库中就包含有做这件事情的库,那就是ConfigParser,这里简单的做一些介绍。
        ConfigParser解析的配置文件的格式比较象ini的配置文件格式,就是文件中由多个section构成,每个section下又有多个配置项,比如:

    [db]
    db_host=127.0.0.1
    db_port=3306
    db_user=root
    db_pass=password
    [concurrent]
    thread=10
    processor=20

        假设上面的配置文件的名字为test.conf。里面包含两个section,一个是db, 另一个是concurrent, db里面还包含有4项,concurrent里面有两项。这里来做做解析:
     1 #-*- encoding: gb2312 -*-
     2 import ConfigParser
     3 import string, os, sys
     4 
     5 cf = ConfigParser.ConfigParser()
     6 cf.read("test.conf")
     7 # 返回所有的section
     8 s = cf.sections()
     9 print 'section:', s
    10 
    11 o = cf.options("db")
    12 print 'options:', o
    13 
    14 v = cf.items("db")
    15 print 'db:', v
    16 
    17 print '-'*60
    18 #可以按照类型读取出来
    19 db_host = cf.get("db", "db_host")
    20 db_port = cf.getint("db", "db_port")
    21 db_user = cf.get("db", "db_user")
    22 db_pass = cf.get("db", "db_pass")
    23 
    24 # 返回的是整型的
    25 threads = cf.getint("concurrent", "thread")
    26 processors = cf.getint("concurrent", "processor")
    27 
    28 print "db_host:", db_host
    29 print "db_port:", db_port
    30 print "db_user:", db_user
    31 print "db_pass:", db_pass
    32 
    33 print "thread:", threads
    34 print "processor:", processors
    35 #修改一个值,再写回去
    36 cf.set("db", "db_pass", "zhaowei")
    37 cf.write(open("test.conf", "w"))

    参考:

    def read_hotfix_cfg(cfg_file):
        print "----Reading the hotfix cfg file----"
        cfg_file = "./mgmt/hotfixes/"+cfg_file
        if not os.path.isfile(cfg_file):
            print "The config file is not exist"
            return False
    
        try:
            cfg = configobj.ConfigObj(cfg_file, encoding='UTF8')
        except Exception, e:
            print "The cfg_file is wrong: ",
            print e
            return False
       
        elements_path = []
        hf_elements = 'file_build_path'
        if cfg.has_key(hf_elements):
            elements_path = cfg[hf_elements].strip().split('
    ')
        else:
            print "The [file_bulid_path] is not in the cfg file"
            return False
        
        global VERSIONS, SRC_TREE
        if cfg.has_key('versions'):
            VERSIONS = str(cfg['versions'])
            SRC_TREE = VERSIONS + "-rpl2sles-upgrade"
        else:
            print "The [versions] is not in the cfg file"
            return False
  • 相关阅读:
    如何复制图文消息封面图片?正文没显示
    微信企业号已开通账号超过10万 日均消息量超过100万条
    微信服务号模板消息接口新增"设置行业"和"添加模板"及细节优化
    张小龙在微信公开课上的演讲
    做微信营销你知道男女用微信的习惯吗?
    微信时代,"邮"你选择 腾讯企业邮箱推新玩法
    亲身体验,不要再拖! 拖! 拖!
    The Promise of Deep Learning
    判断两个数组是否相等
    matlab学习笔记(一)单元数组
  • 原文地址:https://www.cnblogs.com/WayneZeng/p/9290743.html
Copyright © 2011-2022 走看看