def checkCache(cachedText):
for line in open("cache"):
if cachedText + ":" in line:
print line
open("cache").close()
else:
requestDefinition(cachedText)
此代码在文件(缓存)的每一行中搜索特定的字符串(cachedText+“:”)。在
如果在整个文件中找不到特定的字符串,它将调用另一个函数(requestNewDefinition(cachedText))。在
但是我上面的代码为每个不匹配的行执行函数。在
如何在一个文件中搜索一个字符串(cachedText+“:”),如果在文件中的任何地方都找不到该字符串,则执行另一个函数?在
缓存示例:
^{pr2}$
我猜你想要这样的东西。如果找到这条线,你应该“断开”“中断”将结束for循环。附加到for循环的else语句(与if语句相反)只有在for循环遍历每一行而不满足“break”条件时才会执行。完成后仍要关闭文件。在
像这样:
注意}。只有当}。有关详细信息,请参见the Python documentation。在
else:
是如何附加到for
,而不是{else:
通过耗尽iterable而完成时,else:
才被执行,而不是执行break
,这意味着文件中的任何地方都找不到{你的for循环中断了。实际上,您正在检查文件的每一行,并对不匹配的每一行执行函数。在
还请注意,调用
open("cache").close()
将重新打开缓存文件并立即关闭它,而不会关闭在for循环开始时打开的句柄。在执行所需操作的一种方法是使
else
子句成为for
循环的一部分。注意for循环中的else很棘手!。在只有在循环中没有调用
for
时,for
循环的else部分才会在循环结束时执行。在相关问题 更多 >
编程相关推荐