【发布时间】:2022-11-18 21:44:02
【问题描述】:
我正在尝试运行以下代码。我收到错误 NameError: name 'XXXXX' is not defined。
if __name__ == '__main__':
landsat_dir = "C:/Users/mbariz/Documents/Landsat"
MOD09_dir = "C:/Users/mbariz/Documents/MOD09"
def search_landsat_name(path):
"""to get the landsat list file name"""
output_list =[]
pt=os.listdir(path)
for item in pt:
if str.find(item,'B3.TIF') != -1: #satisfied conditions
output_list.append(item[:-6])
return np.unique(output_list)
for item in landsat_file_list:
print(item)
LD_BQA_name = item + "BQA.TIF"
LD_B1_name = item + "B1.TIF"
LD_B2_name = item + "B2.TIF"
LD_B3_name = item + "B3.TIF"
LD_B4_name = item + "B4.TIF"
LD_B5_name = item + "B5.TIF"
LD_B6_name = item + "B6.TIF"
LD_B7_name = item + "B7.TIF"
打印(LD_B3_名称)
NameError Traceback(最后一次调用) [8] 中的单元格,第 1 行 ----> 1 打印(LD_B3_name)
NameError:未定义名称“LD_B3_name”
请有任何建议。
【问题讨论】:
-
您认为导致定义
LD_B3_name之类的步骤的顺序是什么?它只在一个似乎从未被调用过的函数内部赋值,赋值永远不会发生,因为它遵循return语句,并且它是一个局部变量,所以它不存在于函数之外。 -
如果代码的缩进与您发布的代码完全相同,则
LD_B3_name未在您尝试打印它的命名空间中定义,这与错误提示的完全一样。LD_B3_name仅对函数search_landsat_name是本地的。 -
而不是像
LD_B3_name那样一大堆名称相似的变量——为什么不用一个字典呢?您可以从函数中返回它,然后将所有名称提供给调用代码。
标签: python arrays python-3.x list