【发布时间】:2016-02-21 23:57:12
【问题描述】:
我似乎遇到了一个不觉得是问题的问题,但我看不到解决方案,所以也许其他人可以。
我正在使用一个 ini 文件来存储我正在编写的包的配置详细信息。此 ini 文件包含与其他 ini 文件相关的部分。
我知道还有很多其他方法可以做到这一点,但我选择了这种方法,因为我喜欢配置设置的清晰程度。而且理论上应该很简单。
所以在我的main.ini 文件中我有类似的内容:
[topic_name1]
file_name = 'configSetupFiles/topic_name1.ini'
[topic_name2]
file_name = 'configSetupFiles/topic_name2.ini'
然后在topic_name1.ini 我有一个基本形式的设置,例如:
[topic]
url = 'http://blah.com'
param1 = 10
[another_section]
href = 'x/y?z=yes'
topic_name2.ini 遵循相同的格式。
所以我想做的是:
#!/usr/bin/env python3
fromgent_epid configparser import SafeConfigParser
import os
iniparser = SafeConfigParser(os.environ)
config = {}
iniparser.read('main.ini')
for c in iniparser.sections():
config[c] = iniparser.get(c, 'file_name')
for val in config.values():
print(val) # prints file names without a problem
inip = SafeConfigParser(os.environ)
inip.read(val)
for s in inip.sections():
print("Section:", s)
运行此程序没有错误;它打印val,但没有其他任何迹象。当我在文件名中进行硬编码时,它打印没有问题。但是当我打印出 topic_name ini 文件部分的键时,我会得到一个键流,如下所示:
url
param1
gdmsession
gpg_agent
xmodifiers
java_bindir
gtk_modules
ostype
xsession_is_up
cshedit
user
...
代码:
inip = SafeConfigParser(os.environ)
inip.read('configSetupFiles/topic_name1.ini')
for field in inip.sections():
print(field)
for k in inip[field]:
print(k)
我想打印出密钥,因为每个文件和部分中可能有不同的字段名称,因此我无法直接引用它们并使用.get。
以这种方式创建第二个 ConfigParser 实例时是否存在冲突?我真的不明白为什么它不只是工作。 抱歉,如果我错过了一些信息,已经盯着这个太久了。任何帮助表示赞赏。
【问题讨论】:
标签: python configparser