如何从存储在另一个 ini 配置文件中的文件名打开 ini 配置文件?

How to open an ini config file from filename stored in another ini config file?

我似乎遇到了一个问题,但感觉不是问题,但我看不到解决方案,所以也许其他人可以。

我正在使用 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 但没有任何迹象 else.When 我在它打印的文件名中进行硬编码没有问题。但是当我打印出 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实例会不会有冲突?我真的不明白为什么它不只是工作。 如果我错过了一些信息,我深表歉意,盯着这个太久了。任何帮助表示赞赏。

代码没问题!只是您的 .ini 文件有问题。

删除 main.ini.

中的引号
[topic_name1]
file_name = configSetupFiles/topic_name1.ini
[topic_name2]
file_name = configSetupFiles/topic_name2.ini