zoukankan      html  css  js  c++  java
  • 【译】python configparser中默认值的设定

    在做某一个项目时,在读配置文件中,当出现配置文件中没有对应项目时,如果要设置默认值,以前的做法是如下的:

    try:
        apple = config.get(section, 'apple')
    except NoSectionError, NoOptionError:
        apple = None
    

      但当存在很多配置时,这种写法太糟糕

    幸好,在Configparser.get()函数中有一个vars()的参数,可以自定义;注:只能用ConfigParser.ConfigParser;rawconfigparser是不支持的

    解决方案:

    1、定义函数:

    class DefaultOption(dict):
    
        def __init__(self, config, section, **kv):
            self._config = config
            self._section = section
            dict.__init__(self, **kv)
    
        def items(self):
            _items = []
            for option in self:
                if not self._config.has_option(self._section, option):
                    _items.append((option, self[option]))
                else:
                    value_in_config = self._config.get(self._section, option)
                    _items.append((option, value_in_config))
            return _items

    2、使用

    def read_config(section, location):
        config = configparser.ConfigParser()
        config.read(location)
        apple = config.get(section, 'apple',
                           vars=DefaultOption(config, section, apple=None))
        pear = config.get(section, 'pear',
                          vars=DefaultOption(config, section, pear=None))
        banana = config.get(section, 'banana',
                            vars=DefaultOption(config, section, banana=None))
        return apple, pear, banana

    这样就很好解决了读取配置文件时没有option时自动取默认值,而不是用rasie的方式取默认值

    此方案来之stackoverflow

  • 相关阅读:
    [转]Spring的IOC原理[通俗解释一下]
    自我介绍
    什么是存储过程
    Linux 之 最常用的20条命令
    [转]sql语句中出现笛卡尔乘积 SQL查询入门篇
    mysql 多表连接
    正则表达式
    postman 测试API
    [转]mysql 视图
    数据库 修改统一显示时间
  • 原文地址:https://www.cnblogs.com/landhu/p/9456095.html
Copyright © 2011-2022 走看看