我正在尝试使用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
是我要搜索的键。我一直在循环浏览几个不同的文件,无论出于何种原因,当我打印出它们的键值时,其中一个文件会不断重复。这是为什么?
config.read函数无法按照您认为的方式工作。它处理您指定的文件,但是它使用解析器的现有内容合并结果。它不会重新初始化解析器的内容。因此,如果像在这里一样解析多个文件,则每个新文件都将其内容与解析器的现有状态简单地合并。您认为它正在一遍又一遍地读取相同的文件,但事实并非如此。它只是保留所有先前的结果。
简单的解决方案是一次读取所有文件,然后在单独的循环中进行打印。另外,您可以为每个文件创建一个新的ConfigParser实例(因此为空)。我不知道哪种解决方案最适合您。
仅供参考,读函数可以一步处理一个文件名列表,这将消除您的外部循环。阅读该功能的文档。