【发布时间】:2016-09-04 23:12:22
【问题描述】:
对于我正在尝试设计的程序,我正在检查配置文件中是否存在某些条件。例如,该行:ThisExists 在程序中,或者 ThisIsFirst 存在于文件中,然后是 ThisAlsoExists 在文件后面的某个位置.
我寻找了一种可能在这种情况下使用的有效方法,但找不到任何方法。
我目前的想法基本上是每次我想检查一个条件时对文件进行多次迭代。所以我会有功能:
def checkA(文件)
def checkB(文件)
。 . .
对我来说,这似乎效率低下,因为我必须针对要检查的每个条件进行迭代。
最初我以为我可以只迭代一次,检查每一行是否有我想要验证的每个条件。但我认为我不能这样做,因为可能是多行的条件一次需要有关多行的信息。
我概述的方法是实现此目的的唯一方法,还是有更有效的方法?
我试图在下面提供一个示例。
def main():
file = open(filename)
result1 = checkA(file)
result2 = checkB(file)
"""This is a single line check function"""
def checkA(file)
conditionExists = False
for line in file:
if(line == "SomeCondition"):
conditionExists = True
return conditionExists
"""This is a multi line check function"""
def checkB(file)
conditionExists = False
conditionStarted = False
for line in file:
if(line == "Start"):
conditionStarted = True
elif(line == "End" and conditionStarted):
conditionExists = True
return conditionExists
【问题讨论】:
-
你能给我们举个例子吗?
-
抱歉,现在编辑我的问题,而不是试图把它放在这里。
-
基本上我要问的是,如果您必须对文件进行大量解析,您应该将其拆分为多个单独函数的解析,还是尝试在一个复杂函数中进行解析?函数的复杂性是否值得从多轮解析中节省时间?
-
在大多数情况下,您应该将文件中的数据读入内存中的某个数据结构(Python 对象)中。然后,当您对某事感兴趣时,您应该查询该对象。顺便说一句,Python 有内置库,可以为通常的文件格式执行此操作;请参阅模块 configparser、json、csv。
-
我会调查的。谢谢。