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

  • 相关阅读:
    苑举正相关视频
    pdf怎么转换成word
    Qt架构图及模块分析介绍
    读残雪的《趋光运动 : 回溯童年的精神图景》笔记
    Qt之美(一):D指针/私有实现
    十大美国大学网络公开课
    网络公开课和MOOC资源
    网络课程网站
    Qt源码学习之路(2) QCoreApplication(1)
    xshell如何导入.xsh 文件
  • 原文地址:https://www.cnblogs.com/landhu/p/9456095.html
Copyright © 2011-2022 走看看