我正在尝试从属性文件中读取配置,并将这些属性存储在变量中,以便可以从任何其他类进行访问。
我能够从配置文件中读取配置并进行打印,但是当从其他类访问这些变量时,我遇到了异常。
我的配置文件
Config.cfg.txt
[Ysl_Leader]
YSL_LEADER=192
通用类,我将在其中存储属性。 ConfigReader.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时,我没有任何异常
答案 0 :(得分: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"
}
}