ArcPro Python脚本:含百分比变量的Zonal Statistics输出表创建失败
ArcGIS Pro Python脚本:动态命名输出表失败的排查方案
核心问题排查方向
文件名里的%符号是重灾区
Windows系统和ArcGIS工具会把%识别为环境变量的占位符,比如你写25.000%,系统会尝试解析%000%对应的环境变量,直接触发错误。解决办法是把%替换成合法字符:# 若是数字类型的百分比(如25.000),转成带三位小数的字符串并加标识 pct_str = f"{rounded_percent:.3f}_pct" # 若是带%的字符串(如"25.000%"),直接替换% pct_str = rounded_percent.replace('%', '_pct')别硬拼路径,用
os.path.join
直接字符串拼接路径容易出现转义错误(比如Windows的\被当成转义符),用os.path.join能自动适配系统路径分隔符:import os output_dir = r"C:\Your\Output\Folder" output_table = os.path.join(output_dir, f"zonal_stats_{pct_str}.dbf")检查变量类型与格式
如果rounded_percent是数字类型,直接拼接会丢失小数位(比如25.000变成25.0),必须用:.3f格式化保留三位小数;如果是字符串,要确保没有多余空格或特殊字符。排查文件名/路径长度
ArcGIS部分工具仍受旧版Windows路径长度限制(≤260字符),如果动态生成的路径太长,会触发写入失败,试试缩短文件名或输出目录路径。
可直接运行的示例代码
import arcpy import os # 模拟计算得到的保留三位小数的百分比(数字类型) rounded_percent = 25.000 # 处理百分比字符串,避免非法字符 pct_str = f"{rounded_percent:.3f}_pct" # 拼接合法输出路径 output_dir = r"C:\Projects\MyArcGISProject\Output" output_table = os.path.join(output_dir, f"zonal_stats_{pct_str}.dbf") # 执行Zonal Statistics As Table arcpy.sa.ZonalStatisticsAsTable( in_zone_data=r"C:\Projects\MyArcGISProject\Zones.shp", zone_field="ZoneID", in_value_raster=r"C:\Projects\MyArcGISProject\LandCover.tif", out_table=output_table, ignore_nodata="DATA", statistics_type="MEAN" )
内容的提问来源于stack exchange,提问作者Galen
相关产品推荐
相关产品推荐

