python - 在 Python 中循环 ConfigParser 时,如何停止重复不需要的值?
问题描述
我正在尝试使用 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 实例。我不知道哪种解决方案最适合您。
仅供参考,读取功能可以一步处理文件名列表,这将消除您的外部循环。阅读该功能的文档。
推荐阅读
- r - writeLines() 转换后返回空白.txt -r tm 包
- java - Android Studio SharedPreferences 和字体样式
- swift - 在 tvOS 上更改 SwiftUI 中按钮的颜色
- kubernetes - 如何在由 ReplicaSet/Deployment 创建的 Pod 上创建 LoadBalancer 服务
- python - selenium:无法通过键盘访问
- c++ - 强制浮点运算顺序的 C/C++ 技巧
- markdown - 如何在 Jekyll 的字符串开头放置链接?
- c# - 如何判断当前进程何时通过 IO 操作完成,特别是 chart.SaveImage?
- angular - 无法管理两个插座 [嵌套]。在 http://localhost:4200/index,内部出口显示空白
- f# - 更新了 FSharp.Data,现在在构建服务器上出现错误