我最近被介绍到configparser库。我希望能够检查每个部分是否至少有一个布尔值设置为1。例如:
[Horizontal_Random_Readout_Size]
Small_Readout = 0
Medium_Readout = 0
Large_Readout = 0
以上情况会导致错误。
[Vertical_Random_Readout_Size]
Small_Readout = 0
Medium_Readout = 0
Large_Readout = 1
以上都会过去的。下面是我所想的一些伪代码:
exit_test = False
for sections in config_file:
section_check = False
for name in parser.options(section):
if parser.getboolean(section, name):
section_check = True
if not section_check:
print "ERROR:Please specify a setting in {} section of the config file".format(section)
exit_test = True
if exit_test:
exit(1)
问题:
1)如何执行第一个for循环并遍历配置文件的各个部分?
2)这是一种好的方法还是有更好的方法?(如果没有,请回答问题一。)
使用^{} 必须分析配置。
解析之后,您将使用^{} 方法获得所有节。
您可以遍历每个部分并使用^{} 获取每个部分的所有键/值对。
最好的办法是将文件中的所有行加载到某种数组中(我将忽略可能使用多少内存以及是否改为分页的问题)。
然后,您知道表示标题的行遵循某种格式,因此您可以在数组中迭代以创建包含标题名称、行索引(对主数组的零基引用)以及该标题是否具有值集的对象数组。
在那里,您可以在主数组的交叉引用中迭代这些对象,对于每个标题,检查当前标题和下一个标题之间的下一个“n”行(在主数组中)。
此时,您只需确定该标题的各个配置值,这样您就可以轻松地解析行并检测一个值,然后,如果为true,就可以从循环中中断,或者为了更健壮,对这些标题的值进行独占性检查,以确保只设置了一个值。
使用这种方法,您可以访问所有行,每个标题有一个对象,因此代码保持灵活性和功能性。之后再优化。
希望这是有意义和有帮助的。
相关问题 更多 >
编程相关推荐