如何从存储在另一个 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
我似乎遇到了一个问题,但感觉不是问题,但我看不到解决方案,所以也许其他人可以。
我正在使用 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