你可以在Python的ConfigParser上使用section而不是实例的默认值吗?

时间:2012-10-15 17:06:34

标签: python

您可以通过将dict传递给ConfigParser初始化来获得默认值。

config = ConfigParser.ConfigParser({"test": "ok"})

但是这个默认值是实例范围的。你怎么能从Section1到第2节有不同的默认值?

1 个答案:

答案 0 :(得分:3)

使用重写的getter创建自己的子类?像这样的东西?

class MyConfigParser(ConfigParser):
    my_defaults = {
            'Section 1': 'spam',
            'Section 2': 'eggs',
    }

    def get(self, section, key):
        try:
            return ConfigParser.get(self, section, key)
        except ConfigParser.NoSectionError:
            if section in self.my_defaults:
                self.add_section(section)
                self.set(section, key, self.my_defaults[section])
                return self.my_defaults[section]
            else:
                raise
        except ConfigParser.NoOptionError:
            if section in self.my_defaults:
                self.set(section, key, self.my_defaults[section])
                return self.my_defaults[section]
            else:
                raise