【譯】python configparser中默認值的設定

在作某一個項目時,在讀配置文件中,當出現配置文件中沒有對應項目時,若是要設置默認值,之前的作法是以下的:python

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

  但當存在不少配置時,這種寫法太糟糕app

幸虧,在Configparser.get()函數中有一個vars()的參數,能夠自定義;注:只能用ConfigParser.ConfigParser;rawconfigparser是不支持的函數

 

解決方案:spa

一、定義函數:code

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

 

二、使用blog

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的方式取默認值get

 

此方案來之stackoverflowit

相關文章
相關標籤/搜索