我可以就如何处理 Python 脚本中的错误提出一些建议。从我通过阅读该站点上的所有 Python 错误处理帖子所收集到的信息来看,您不能简单地使用 try except continue 语句绕过 for 循环中的错误。相反,您必须直接处理每个错误。这是我在将它们捆绑在一起时遇到问题的地方。我附上了在 for 循环中间发生的错误消息。此外,我附上了我的脚本,该脚本通过以下工作流程:
- 在栅格周围放置一个多边形
- 在多边形的平均中心上放置一个点
- 使用该点来标识与其相应栅格关联的特定县
- 根据选定的县多边形裁剪栅格
如何将错误消息中的信息合并到 try except continue 语句中,以便脚本可以移动到列表中的下一个栅格,而不是在处理过程中停止?
# Import arcpy module
import arcpy
from arcpy import env
from arcpy.sa import *
arcpy.CheckOutExtension("3D")
# Set Over write
arcpy.env.overwriteOutput = 1
# Set the workspace
env.workspace = r"Z:\temp.gdb"
outworkspace = r"Z:\location2\temp2.gdb"
# Local variables:
counties = r"Z:\temp.gdb\boundaries\Counties"
counties_lyr = arcpy.MakeFeatureLayer_management(counties,"counties_lyr")
# Get the list of rasters to process
raster_list = arcpy.ListRasters("*_clp")
print raster_list
for raster in raster_list:
# Define name and location for output raster
name = outworkspace + "\\" + str(raster)
# Process: Raster Domain
arcpy.RasterDomain_3d(raster, "in_memory/temp", "POLYGON")
# Process: Central Feature
arcpy.MeanCenter_stats("in_memory/temp", "in_memory/temp1")
# Process: Select Layer By Location
arcpy.SelectLayerByLocation_management(counties_lyr, "intersect", "in_memory/temp1", "", "NEW_SELECTION")
# Clip Raster
arcpy.Clip_management(raster, "#", name,counties_lyr, "#", "ClippingGeometry")
# Delete in_memory
arcpy.Delete_management("in_memory")
print "processing " + raster + " complete..."
print "All processing is now finished"