在文件中搜索字符串,如果未找到字符串,则执行函数;用python
此代码在文件(缓存)的每一行中搜索特定字符串(cachedText+“:”) 如果未找到特定字符串,则在整个文件中将调用另一个函数(requestNewDefinition(cachedText)) 但是,我上面的代码为每个不匹配的行执行函数 如何在文件中搜索字符串(cachedText+“:”),如果在文件中的任何位置都找不到该字符串,则执行另一个函数 缓存示例:在文件中搜索字符串,如果未找到字符串,则执行函数;用python,python,string,file,search,caching,Python,String,File,Search,Caching,此代码在文件(缓存)的每一行中搜索特定字符串(cachedText+“:”) 如果未找到特定字符串,则在整个文件中将调用另一个函数(requestNewDefinition(cachedText)) 但是,我上面的代码为每个不匹配的行执行函数 如何在文件中搜索字符串(cachedText+“:”),如果在文件中的任何位置都找不到该字符串,则执行另一个函数 缓存示例: def checkCache(cachedText): for line in open("cache"):
def checkCache(cachedText):
for line in open("cache"):
if cachedText + ":" in line:
print line
open("cache").close()
else:
requestDefinition(cachedText)
大概是这样的:
hello:world
foo:bar
请注意else:
是如何附加到for
的,而不是if
的。else:
仅当的通过耗尽iterable来完成时才执行,而不是执行中断
,这意味着文件中的任何位置都找不到缓存文本
。有关更多信息,请参阅。类似于以下内容:
hello:world
foo:bar
请注意else:
是如何附加到for
的,而不是if
的。else:
仅当
的通过耗尽iterable来完成时才执行,而不是执行中断
,这意味着文件中的任何位置都找不到缓存文本
。有关更多信息,请参阅。我猜您想要这样的东西。如果找到该行,则应“断开”。“break”将结束for循环。附加到for循环的else语句(与if语句相反)只有在for循环遍历每一行而从未达到“break”条件时才会执行。完成后仍要关闭该文件
def checkCache(cachedText):
for line in open("cache"):
if cachedText + ":" in line:
print line
break
else:
requestDefinition(cachedText)
我猜你想要这样的东西。如果找到该行,则应“断开”。“break”将结束for循环。附加到for循环的else语句(与if语句相反)只有在for循环遍历每一行而从未达到“break”条件时才会执行。完成后仍要关闭该文件
def checkCache(cachedText):
for line in open("cache"):
if cachedText + ":" in line:
print line
break
else:
requestDefinition(cachedText)
您的for循环已断开。实际上,您正在检查文件的每一行,并对不匹配的每一行执行函数
还要注意,调用open(“cache”).close()
将重新打开缓存文件并立即关闭它,而不会关闭在for循环开始时打开的句柄
执行所需操作的一种方法是使else
子句成为for
循环的一部分注意for循环中的else是很棘手的
def checkCache(cachedText):
f = open("cache")
for line in f:
if cachedText + ":" in line:
print line
break
else:
requestDefinition(cachedText)
f.close()
for
循环的else部分在循环结束时执行,前提是循环中没有调用break
。for循环已中断。实际上,您正在检查文件的每一行,并对不匹配的每一行执行函数
还要注意,调用open(“cache”).close()
将重新打开缓存文件并立即关闭它,而不会关闭在for循环开始时打开的句柄
执行所需操作的一种方法是使else
子句成为for
循环的一部分注意for循环中的else是很棘手的
def checkCache(cachedText):
f = open("cache")
for line in f:
if cachedText + ":" in line:
print line
break
else:
requestDefinition(cachedText)
f.close()
for
循环的else部分在循环结束时执行,前提是循环中没有调用break
。必须将打开的文件分配给变量吗?是更快,还是更好的练习。@nazarius:它允许跟踪开放的fie以关闭它。如果你经常调用这个函数,如果你不想耗尽系统资源,你真的应该关闭这个文件。@nazarius:else
部分很棘手,因为它只有在不执行break
的情况下才会执行,这与我们对else
的期望不符。但是,如果这不会给您带来任何问题,那就太完美了,您将能够使用for
的else
子句,而不会有任何问题。oops,我在代码的for循环中犯了一个错误:我忘了使用上面分配了一行的cache
变量。我更正了我的代码。谢谢大家的体贴帮助!必须将打开的文件分配给变量吗?是更快,还是更好的练习。@nazarius:它允许跟踪开放的fie以关闭它。如果你经常调用这个函数,如果你不想耗尽系统资源,你真的应该关闭这个文件。@nazarius:else
部分很棘手,因为它只有在不执行break
的情况下才会执行,这与我们对else
的期望不符。但是,如果这不会给您带来任何问题,那就太完美了,您将能够使用for
的else
子句,而不会有任何问题。oops,我在代码的for循环中犯了一个错误:我忘了使用上面分配了一行的cache
变量。我更正了我的代码。谢谢大家的体贴帮助!