【问题标题】:How to open an ini config file from filename stored in another ini config file?如何从存储在另一个 ini 配置文件中的文件名中打开一个 ini 配置文件?
【发布时间】: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


    【解决方案1】:

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

    删除main.ini 中的引号。

    [topic_name1]
    file_name = configSetupFiles/topic_name1.ini
    [topic_name2]
    file_name = configSetupFiles/topic_name2.ini
    

    【讨论】:

    • 我刚刚在脑海中做了一个“O.M.G”。很简单!非常感谢,这让我发疯了,我从来没有想过问题出在哪里。
    猜你喜欢
    • 2016-02-25
    • 1970-01-01
    • 2018-08-08
    • 2013-04-02
    • 2010-09-13
    • 2021-06-07
    • 2023-03-03
    • 2017-05-04
    • 2020-08-08
    相关资源
    最近更新 更多