【发布时间】:2019-06-24 15:38:54
【问题描述】:
我正在尝试从属性文件中读取配置并将这些属性存储在一个变量中,以便可以从任何其他类访问它。
我能够从配置文件中读取配置并打印相同的内容,但是当从其他类访问这些变量时出现异常。
我的配置文件
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 时没有任何异常
【问题讨论】:
-
也许您的代码没有在正确的目录中查找 Config.cfg.txt 文件。如果文件无法打开,
config.read()不会引发异常。 -
但是当我直接运行 ConfigReader.py 时,我从 Config.cfg.txt 中获得了正确的值,并且只有当我尝试在其他类中获取该值并且我正在使用时我才面临问题ConfigReader.DockerDetails.YSL_Leader 来获取该变量。如果我的问题没有正确形成,请告诉我
-
在
config.read()之前,打印os.getcwd()的结果,看看你是否在正确的目录中。 -
谢谢!!!它终于奏效了。问题是当我在 ConfigReader.py 中打印 os.getcwd() 时,它指向了文件所在的正确位置,但是当我从另一个 calss 调用时,它没有指向正确的子文件夹
标签: python django python-3.x configparser python-config