2016-11-11 30 views
1

我是Python中的新手。我試圖從文件中找到一個特定的單詞,並重新設置值的成功或失敗。如果找到關鍵字,則該腳本有效,但如果找不到該關鍵字,則該腳本無效。感謝您的幫助。查找文件中的特定單詞並返回邏輯結果

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""" 

+0

你讀過的錯誤消息?什麼不清楚呢?你需要爲'found'設置一個值(例如'False') – Julien

+0

我讀過它,但仍然不知道該怎麼做。現在正在工作。謝謝。 – Indomart

回答

1

你的問題是你永遠不會進來itialize 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使用你的函數之前,一個「默認」值是固定的:

def check(): 
    found = False 
+0

謝謝。現在正在工作。 – Indomart

+0

@Indomart您的歡迎!但是你應該知道,[在堆棧溢出上的選票用來表示感謝](http://meta.stackexchange.com/questions/126180/is-it-acceptable-to-write-a-thank-you -in-A-評論)。 –

0

只要指定你check()的begining found值:

def check(): 
    found = False 
    ... 
+0

謝謝。它正在工作。 – Indomart

0

你並不需要分配這種行爲可以用一個簡單的例子來說明值找到。您只需返回如果您發現'結束CR_Daily'並返回後。我改寫了你這樣的代碼:

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") 
+0

謝謝。這也適用於我。 – Indomart

相關問題