Python 在文件中查找特定单词并返回逻辑结果
我是Python的新手。我试图从文件中找到一个特定的单词,并重新计算值success或fail。如果找到关键字,则此脚本有效,但如果找不到关键字,则此脚本无效。谢谢你的帮助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
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")