如何调试" NameError:全局名称' X'没有定义"在Python?我是Python的新手。我正在使用jupyter_notebook和Python 2.7来执行代码。我正面临以下错误。
我的代码:
logFile = "NASAlog.txt"
def parseLogs():
parsed_logs=(sc
.textFile(logFile)
.map(parseApacheLogLine)
.cache())
access_logs = (parsed_logs
.filter(lambda s: s[1] == 1)
.map(lambda s: s[0])
.cache())
failed_logs = (parsed_logs
.filter(lambda s: s[1] == 0)
.map(lambda s: s[0]))
failed_logs_count = failed_logs.count()
if failed_logs_count > 0:
print 'Number of invalid logline: %d' % failed_logs.count()
for line in failed_logs.take(20):
print 'Invalid logline: %s' % line
print 'Read %d lines, successfully parsed %d lines, failed to parse %d lines' % (parsed_logs.count(), access_logs.count(), failed_logs.count())
return parsed_logs, access_logs, failed_logs
parsed_logs, access_logs, failed_logs = parseLogs()
ERROR
> NameError Traceback (most recent call last)
> <ipython-input-18-b365aa793252> in <module>()
> 24 return parsed_logs, access_logs, failed_logs
> 25
> ---> 26 parsed_logs, access_logs, failed_logs = parseLogs()
>
> <ipython-input-18-b365aa793252> in parseLogs()
> 2
> 3 def parseLogs():
> ----> 4 parsed_logs=(sc
> 5 .textFile(logFile)
> 6 .map(parseApacheLogLine)
>
> NameError: global name 'sc' is not defined
答案 0 :(得分:0)
问题是你从未定义过sc。因此python无法找到它。 (有道理,不是吗?)
现在有几个可能的原因: - python区分大小写。你在某处定义SC而不是sc吗? ...或Sc代替sc?
您在另一个函数中定义了sc( - &gt;您在parseLogs()之外的函数中定义了它)。如果你只定义它,那么变量将是本地的,只是可用于函数内的代码。将行global sc
添加到函数的第一行,以便在整个代码中随处访问它。
您根本没有定义sc。