0

我正在尝试从属性文件中读取配置并将这些属性存储在一个变量中,以便可以从任何其他类访问它。

我可以从配置文件中读取配置并打印相同的配置,但是当从其他类访问这些变量时出现异常。

我的配置文件

Config.cfg.txt
    [Ysl_Leader]
    YSL_LEADER=192

我将我的属性存储在变量中的通用类。配置读取器.py

    import configparser

        class DockerDetails:
            config = configparser.RawConfigParser()
            _SECTION = 'Ysl_Leader'
            config.read('Config.cfg.txt')
            YSL_Leader = config.get('Ysl_Leader', 'YSL_LEADER')
            print(YSL_Leader)

我试图获取“YSL_Leader”值的另一个类

def logger(request):
    print(ConfigReader.DockerDetails.YSL_Leader)

例外:

  File "C:\Users\pvivek\AppData\Local\Programs\Python\Python37-32\lib\configparser.py", line 780, in get
    d = self._unify_values(section, vars)
  File "C:\Users\pvivek\AppData\Local\Programs\Python\Python37-32\lib\configparser.py", line 1146, in _unify_values
    raise NoSectionError(section) from None
configparser.NoSectionError: No section: 'Ysl_Leader'

仅供参考:单独运行 ConfigReader.py 时没有任何异常

4

1 回答 1

0

分析您的问题您尝试创建一个环境文件,如果是这种情况,因为您正在使用一个类来读取文件,您必须在其构造函数中执行此操作(记住要创建引用)并实例化才能访问它的值,你可以完美地使用一个函数来执行这个读取,记住访问结果可以被视为一个字典

配置文件名 = (config.ini)

[DEFAULT]
ANY = ANY

[Ysl_Leader]
YSL_LEADER = 192

[OTHER]
VALUE = value_config
# using classes
class Cenv(object):
    """
    [use the constructor to start reading the file]
    """
    def __init__(self):
        self.config = configparser.ConfigParser()
        self.config.read('config.ini')

# using functions
def Fenv():
    config = configparser.ConfigParser()
    config.read('config.ini')
    return config

def main():
    # to be able to access it is necessary to instantiate the class
    instance = Cenv()
    cfg = instance.config
    # access the elements using the key (like dictionaries) 
    print(cfg['Ysl_Leader']['YSL_LEADER'])
    print(cfg['OTHER']['VALUE'])

    # call function and assign returned values
    cfg = Fenv()
    print(cfg['Ysl_Leader']['YSL_LEADER'])
    print(cfg['OTHER']['VALUE'])
    # in the case of django assign values ​​in module settings

if __name__ == '__main__':
    main()

您可以将结果解释如下(字典)

{
    "Ysl_Leader": {
        "YSL_LEADER": "192"
    },
    "OTHER": {
        "VALUE": "value_config"
    }
}
于 2019-06-24T17:51:32.130 回答