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

  • 相关阅读:
    贪心策略---不重叠的区间个数
    贪心策略---分配饼干
    双指针---最长子序列
    双指针---回文字符串
    双指针---反转字符串中的元音字符
    双指针---两数平方和
    双指针---有序数组的TWO SUM
    排序---小结
    排序---桶排序
    变量的解构赋值
  • 原文地址:https://www.cnblogs.com/landhu/p/9456095.html
Copyright © 2011-2022 走看看