ArcPy循环批量生成面文件交集时输出命名报错(ERROR 00800)求助
解决ArcPy中ERROR 00800的字符串拼接问题
嘿,这个问题我太熟了!ERROR 00800本质就是你传给ArcPy工具的字符串参数(比如输出路径)格式不对,看你代码里的output2 = '"'...,明显是多余的双引号在搞鬼——ArcPy不需要把路径用引号包起来,直接传纯字符串路径就行,额外的引号会被当成路径的一部分,自然就报错了。
给你整理了修正后的完整代码,完全贴合你的需求:
import arcpy import os # 先配置一下环境,省得麻烦 arcpy.env.overwriteOutput = True # 允许覆盖已生成的文件,避免重复运行报错 workspace = r"C:\你的数据文件夹路径" # 替换成你的实际工作文件夹 arcpy.env.workspace = workspace # 普查区文件的完整路径 census_tract = os.path.join(workspace, "普查区文件名.shp") # 替换成你的普查区文件名 # 你的10个气候文件名称列表,这里写2个示例 climate_files = ["RCP4_2040_1", "RCP4_2040_2", "..."] # 补充剩下的8个 for climate_name in climate_files: # 拼接输入气候文件的完整路径 climate_path = os.path.join(workspace, f"{climate_name}.shp") # 拼接输出文件名,格式就是「气候文件名_AU.shp」 output_path = os.path.join(workspace, f"{climate_name}_AU.shp") # 执行交集操作 try: arcpy.Intersect_analysis( in_features=[census_tract, climate_path], out_feature_class=output_path, join_attributes="ALL" ) print(f✅ 已成功生成结果:{output_path}") except arcpy.ExecuteError: print(f❌ 处理{climate_name}时出错:{arcpy.GetMessages(2)}")
几个关键注意点:
- 别加多余引号:你之前的
output2 = '"'...是错误核心,ArcPy接受直接的字符串路径,不需要用引号包裹。 - 用
os.path.join拼接路径:比直接用+更稳妥,能自动适配Windows/macOS的路径分隔符,避免因为斜杠问题出错。 - f-string拼接字符串:Python3.6+支持的写法,比传统的字符串拼接更清晰,不容易写错。如果是老版本Python,换成
climate_name + "_AU.shp"也可以。 - 异常捕获:加个
try-except能帮你快速定位哪个文件出了问题,方便排查。
按照这个代码改,你的10个交集结果应该能顺利生成啦!
内容的提问来源于stack exchange,提问作者MarioF
相关产品推荐
相关产品推荐

