Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在文件中搜索字符串,如果未找到字符串,则执行函数;用python_Python_String_File_Search_Caching - Fatal编程技术网

在文件中搜索字符串,如果未找到字符串,则执行函数;用python

在文件中搜索字符串,如果未找到字符串,则执行函数;用python,python,string,file,search,caching,Python,String,File,Search,Caching,此代码在文件(缓存)的每一行中搜索特定字符串(cachedText+“:”) 如果未找到特定字符串,则在整个文件中将调用另一个函数(requestNewDefinition(cachedText)) 但是,我上面的代码为每个不匹配的行执行函数 如何在文件中搜索字符串(cachedText+“:”),如果在文件中的任何位置都找不到该字符串,则执行另一个函数 缓存示例: def checkCache(cachedText): for line in open("cache"):

此代码在文件(缓存)的每一行中搜索特定字符串(cachedText+“:”)

如果未找到特定字符串,则在整个文件中将调用另一个函数(requestNewDefinition(cachedText))

但是,我上面的代码为每个不匹配的行执行函数

如何在文件中搜索字符串(cachedText+“:”),如果在文件中的任何位置都找不到该字符串,则执行另一个函数

缓存示例:

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
变量。我更正了我的代码。谢谢大家的体贴帮助!