You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python运行报错NameError: name 'LD_B3_name' is not defined求解决方案

问题分析与解决建议

核心错误原因

  • return语句阻断代码执行:search_land_name函数中,return np.unique(output_list)写在for循环之前,执行return后函数直接退出,后续定义LD_B3_name等变量的代码完全不会运行。
  • 局部变量无法外部访问:就算循环执行,LD_B3_name是函数内部的局部变量,函数外部不能直接调用。
  • 缺失模块导入:代码用到os和numpy(用np别名),但未导入这两个模块,会引发额外的NameError。
  • 未定义land_file_list:直接使用land_file_list遍历,但没有把search_land_name的返回值赋值给它。

修正后的代码示例

import os
import numpy as np

def search_land_name(path):
    """获取土地列表文件名"""
    output_list = []
    pt = os.listdir(path)
    for item in pt:
        # 更直观的字符串包含判断,替代str.find
        if 'B3.TIF' in item:
            output_list.append(item[:-6])
    return np.unique(output_list) 

if __name__ == '__main__':
    land_dir = "C:/Users/mb/Documents/Land"
    MOD_dir = "C:/Users/mb/Documents/MOD"
    # 调用函数获取文件名列表
    land_file_list = search_land_name(land_dir)
    
    for item in land_file_list:
        print(item)
        LD_QA_name = item + "QA.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"
        
        # 示例:在这里直接处理文件,比如读取TIFF
        # from PIL import Image
        # img = Image.open(LD_B3_name)
        # img.show()

关键修正说明

  • 先导入os和numpy模块,解决依赖缺失问题。
  • 调整if __name__ == '__main__':的位置,确保函数先定义再被调用。
  • 将return语句移到函数末尾,保证for循环能正常执行,生成LD_B3_name等变量。
  • 把search_land_name的返回值赋值给land_file_list,解决遍历变量未定义的问题。
  • 如果需要在全局或函数外部使用LD_B3_name,建议在循环内直接处理(如读取文件),或者将变量存入全局列表(不推荐滥用全局变量)。

内容的提问来源于stack exchange,提问作者Mbariz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 23:41:28