arcpy.management.Rename工具无法执行问题求助
问题分析与修复方案
核心问题(导致重命名无效果)
最后一行的Rename工具调用方式错误:你把工具调用写成了赋值语句arcpy.management.Rename = (FC, layername, "FeatureClass"),这只是给arcpy.management.Rename函数对象赋值,并未实际执行重命名操作。正确的调用方式是使用函数调用语法:
arcpy.management.Rename(FC, layername, "FeatureClass")
其他潜在问题及修复
Subunit逻辑错误
原代码中sunit = unit + "_"会把sunit的值覆盖为unit加下划线,应改为使用自身变量:if sunit != "": sunit = sunit + "_"日期范围硬编码问题
当daterange == "true"时,你用了字符串字面量拼接,导致日期部分固定为startdate-enddate,需使用用户输入的startdate和enddate变量:if daterange == "true": date = f"{startdate}-{enddate}"未使用的
name参数
代码中获取了name参数但未将其加入到layername中,若这是标准命名的一部分,需补充到拼接逻辑里,比如:layername = unit + sunit + sens + cat + name + location + date + source + dt
修复后的完整代码
import arcpy # 获取参数 FC = arcpy.GetParameter(0) # 必填 unit = arcpy.GetParameter(1) sunit = arcpy.GetParameter(2) sens = arcpy.GetParameter(3) cat = arcpy.GetParameter(4) # 必填 name = arcpy.GetParameter(5) # 必填 location = arcpy.GetParameter(6) daterange = arcpy.GetParameterAsText(7) date = arcpy.GetParameterAsText(8) startdate = arcpy.GetParameterAsText(9) enddate = arcpy.GetParameterAsText(10) resolution = arcpy.GetParameter(11) source = arcpy.GetParameter(12) dt = arcpy.GetParameter(13) # 必填 # 构建图层名称 # 单位 if unit != "": unit = unit + "_" # 子单位 if sunit != "": sunit = sunit + "_" # 敏感度 if sens == "Yes": sens = "SENSITIVE_" elif sens == "Yes, at the feature level": sens = "SENSITIVEFL_" # 分类 cat = cat.split(" -")[0] + "_" # 修饰符 # 位置 location = location.replace(" ", "") # 日期 if daterange == "true": date = f"{startdate}-{enddate}" # 数据源 source = source.replace(" ", "") # 数据类型 if dt == "Point": dt = "_pt" elif dt == "Line": dt = "_ln" elif dt == "Polygon": dt = "_py" elif dt == "Raster": dt = "_ra" elif dt == "Non-feature Attribute Table": dt = "_tbl" # 生成并应用新名称 layername = unit + sunit + sens + cat + name + location + date + source + dt layername = layername.replace("__", "_").replace(" ", "") # 正确调用Rename工具执行重命名 arcpy.management.Rename(FC, layername, "FeatureClass")
内容的提问来源于stack exchange,提问作者Tanner
相关产品推荐
相关产品推荐

