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

如何在ArcPy的for循环中修改输出文件名?

解决ArcPy循环中ExtractByAttributes结果覆盖问题

核心问题是每次循环复用同一个result变量,导致之前的结果被覆盖。可以通过以下两种方式解决:

方式一:用列表存储所有结果

将每次迭代的结果存入列表,既保留所有处理后的栅格对象,又避免单个变量覆盖:

# 初始化列表存储所有处理结果
results_list = []
for i in test:
    path = folder_path + "\\" + i + "\\" + i + '.tif'
    # 生成当前栅格的处理结果
    current_result = ExtractByAttributes(path,"VALUE = 10 OR VALUE = 30")
    results_list.append(current_result)
    # 可选:将结果保存到磁盘,用原文件名生成唯一输出路径
    output_path = f"{folder_path}\\extracted_{i}.tif"
    current_result.save(output_path)
  • 后续可通过results_list[索引值]调用对应栅格的处理结果,比如results_list[0]对应第一个栅格的处理结果。
  • 保存文件时,用extracted_前缀+原文件名的方式,确保每个输出文件名称唯一,不会被覆盖。

方式二:用字典关联原文件名与结果

如果需要更直观地对应原栅格和处理结果,可用字典存储,键为原文件名,值为处理后的栅格对象:

# 初始化字典存储结果,键为原栅格文件名
results_dict = {}
for i in test:
    path = folder_path + "\\" + i + "\\" + i + '.tif'
    current_result = ExtractByAttributes(path,"VALUE = 10 OR VALUE = 30")
    results_dict[i] = current_result
    # 保存到磁盘
    output_path = f"{folder_path}\\extracted_{i}.tif"
    current_result.save(output_path)
  • 后续可通过results_dict["原文件名"]直接获取对应处理结果,比如results_dict["dem_01"]就对应名为dem_01的栅格处理结果,维护更方便。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 18:40:45