NameError:未定义全局名称“myLogFile”
Posted
技术标签:
【中文标题】NameError:未定义全局名称“myLogFile”【英文标题】:NameError: global name 'myLogFile' is not defined 【发布时间】:2012-04-13 05:18:16 【问题描述】:我有两个函数,我已将其中一个函数放入单独的 .py 文件中,以便导入它,但在尝试运行脚本时出现错误。
我放在单独的 .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 在代码的下方声明(即日志文件的位置),但我有点困惑。
谢谢
【问题讨论】:
如果您向我们展示了一个完整的简短示例来说明问题,我们将能够告诉您究竟问题是什么...... 文件“D:\temp\UFRM\messaging.py”,第 4 行,在 output_messaging myLogFile.write(message) NameError: global name 'myLogFile' is not defined 【参考方案1】:错误很明显。 myLogFile
未在您的 output_messaging
函数中的任何位置定义。您需要在该函数中定义它,或将其作为参数传入。
无论如何,您都不应该使用全局变量,它们几乎总是一个坏主意。显式传递参数。
【讨论】:
我在 output_messaging 函数中添加了全局 myLogFile,但它仍然给我同样的错误。【参考方案2】:在output_messaging
中,您没有global myLogFile
来表示myLogFile
是在文件的其他位置定义的。当 Python 运行该函数时,它现在无法识别该变量。
请注意,通常不鼓励使用全局变量,但这是一个不同的讨论。
【讨论】:
以上是关于NameError:未定义全局名称“myLogFile”的主要内容,如果未能解决你的问题,请参考以下文章
熊猫不进口吗? 'NameError:未定义全局名称'pandas''