【译】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
Email:362299908@qq.com