如果在解析配置时找不到项目,如何设置默认值

时间:2019-04-25 06:27:20

标签: python-3.x

我正在使用python ConfigParser解析config.ini文件,但是如果我的配置文件中没有特定项目,则会出现错误。我想进行检查,以便如果我尝试获取不在配置文件中的值,则该值应返回None。

下面是我编写的配置解析器类。

from configparser import ConfigParser

class MyConfiguration(object):
    def __init__(self, *file_names):
        # print(file_names)
        parser = ConfigParser()
        # parser.optionxform = str  
        found = parser.read(file_names)
        if not found:
            raise ValueError('No config file found!')
        for section in parser.sections():
            # print(section)
            # print(parser.items(section))
            self.__dict__.update(parser.items(section))  

config = MyConfiguration(FILE1, FILE2)

使用配置文件中的任何项,我正在调用config.key

期望: 如果我尝试获取不可用的config.key_unknown,则应返回None

1 个答案:

答案 0 :(得分:0)

您可能应该使用__getattr__:而不是在字典中设置键:

from configparser import ConfigParser

class MyConfiguration(object):
    def __init__(self, *file_names):
        # print(file_names)
        parser = ConfigParser()
        # parser.optionxform = str  
        found = parser.read(file_names)
        if not found:
            raise ValueError('No config file found!')
        self._parser = parser

    def __getattr__(self, key):
        for section in self._parser.sections():
            if key in section:
                return section[key]
        return None