在Python中循环ConfigParser时如何停止重复的不需要的值?

问题描述 投票:0回答:1

我正在尝试使用configParser上传.ini文件。一切工作正常,直到出现嵌套循环。我正在尝试在每个文件中找到键值,然后在该文件的每个部分中查找并打印出键对值。

for i in iniFiles:
    config.read(i)        
    for j in config.sections():
        if config.has_option(j, description):
            print(j + ':', config[j][description])

在示例中,iniFiles是一个字符串列表,其中包含我尝试浏览的每个文件的路径。 description是我要搜索的键。我一直在循环浏览几个不同的文件,无论出于何种原因,当我打印出它们的键值时,其中一个文件会不断重复。这是为什么?

python loops config ini configparser
1个回答
0
投票

config.read函数无法按照您认为的方式工作。它处理您指定的文件,但是它使用解析器的现有内容合并结果。它不会重新初始化解析器的内容。因此,如果像在这里一样解析多个文件,则每个新文件都将其内容与解析器的现有状态简单地合并。您认为它正在一遍又一遍地读取相同的文件,但事实并非如此。它只是保留所有先前的结果。

简单的解决方案是一次读取所有文件,然后在单独的循环中进行打印。另外,您可以为每个文件创建一个新的ConfigParser实例(因此为空)。我不知道哪种解决方案最适合您。

仅供参考,读函数可以一步处理一个文件名列表,这将消除您的外部循环。阅读该功能的文档。

© www.soinside.com 2019 - 2024. All rights reserved.