2012-03-29 157 views
0

我有兩個函數,我將其中一個函數放入了一個單獨的.py文件,所以我可以導入它,但是當我嘗試運行腳本時出現錯誤。NameError:沒有定義全局名稱'myLogFile'

,我放入單獨的.py功能是:

def output_messaging(message): 
    global myEmailText 
    myLogFile.write(message) 
    myEmailText = myEmailText + message 
    print message 

,我運行具有以下代碼的腳本:

def finish_process(errors): 
    global myLogFile 
    myLogFile.close() 
    if errors == 0: 
     myEmailHeader = "Subject: **" 
    elif errors == 1: 
     myEmailHeader = "Subject: **" 
    else: 
     myEmailDestination.append("**") 
     #myEmailHeader = "Subject: **" 
    server = smtplib.SMTP(myServer) #email data log to nominated individuals 
    server.sendmail(myEmailSender, myEmailDestination, myEmailHeader + "\n" + myEmailText) 
    server.quit() 

當我運行該腳本,我碰到下面的錯誤。

NameError: global name 'myLogFile' is not defined 

myLogFile在代碼(這是日誌文件的位置)中聲明較低,但我有點困惑。

謝謝

+0

如果您向我們展示了一個完整,簡短的示例來說明問題,我們將能夠告訴您究竟*問題是什麼...... – NPE 2012-03-29 14:31:43

+0

錯誤的行號? – 2012-03-29 14:35:49

+0

output_messaging中的第4行文件「D:\ temp \ UFRM \ messaging.py」 myLogFile.write(message) NameError:全局名稱'myLogFile'未定義 – MapMan 2012-03-29 14:44:10

回答

1

錯誤很明顯。 myLogFile在您的output_messaging函數的任何地方都沒有定義。您需要在該函數中定義它,或者將其作爲參數傳遞。

無論如何,你不應該使用全局變量,它們幾乎總是一個壞主意。明確傳遞參數。

+0

我在output_messaging函數中添加了全局myLogFile,但它仍然給我同樣的錯誤。 – MapMan 2012-03-29 14:39:07

-1

output_messaging中,您沒有global myLogFile指示myLogFile在文件的其他位置定義。當Python運行該函數時,它現在不能識別變量。

請注意,全局變量通常是不鼓勵的,但這是一個不同的討論。

相關問題