Python 在文件中查找特定单词并返回逻辑结果

Python 在文件中查找特定单词并返回逻辑结果,python,Python,我是Python的新手。我试图从文件中找到一个特定的单词,并重新计算值success或fail。如果找到关键字,则此脚本有效,但如果找不到关键字,则此脚本无效。谢谢你的帮助 def check(): datafile = open('data\CR_Daily201611070011.log') for line in datafile: if 'End of CR_Daily' in line: found = True

我是Python的新手。我试图从文件中找到一个特定的单词,并重新计算值success或fail。如果找到关键字,则此脚本有效,但如果找不到关键字,则此脚本无效。谢谢你的帮助

def check():
    datafile = open('data\CR_Daily201611070011.log')
    for line in datafile:
        if 'End of CR_Daily' in line:
            found = True
            break
    return found

found = check()
if found:
    print ("Success")
else:
    print ("Fail")

以下是未找到关键字时的结果:

Traceback (most recent call last):
File "file_reader.py", line 26, in <module>
found = check()
File "file_reader.py", line 24, in check
return found
UnboundLocalError: local variable 'found' referenced before assignment"""
回溯(最近一次呼叫最后一次):
文件“File_reader.py”,第26行,在
找到=检查()
检查文件“File_reader.py”,第24行
返回发现
UnboundLocalError:在赋值“”之前引用了局部变量“找到”


只需在
检查()开始时指定
找到的
值即可:


您的问题是从未初始化
found
。在函数中,if语句从未运行,这意味着从未创建
found
。可以通过一个简短的示例演示此行为:

>>> if False:
        abc = True


>>> abc
Traceback (most recent call last):
  File "<pyshell#3>", line 1, in <module>
    abc
NameError: name 'abc' is not defined
>>

您不需要为found分配值。如果您找到“每日CR_结束”,您只需返回True,然后在for之后返回False。我将您的代码改写为:

def check():
    datafile = open('data\CR_Daily201611070011.log')
    for line in datafile:
        if 'End of CR_Daily' in line:
            return True
    return False

found = check()
if found:
    print ("Success")
else:
    print ("Fail")

您读过错误消息吗?有什么不清楚的地方吗?您需要为
found
(例如
False
)设置一个值。我读过了,但仍然不确定该怎么办。它现在正在工作。谢谢。@Indomart欢迎您!但您应该知道。
def check():
    found = False
def check():
    datafile = open('data\CR_Daily201611070011.log')
    for line in datafile:
        if 'End of CR_Daily' in line:
            return True
    return False

found = check()
if found:
    print ("Success")
else:
    print ("Fail")