I have a handy script tool that loops through a workspace and renames and copies shapefiles to a feature dataset. However, if there is a corrupted shapefile somewhere in the workspace the script fails and stops processing.
How do you handle errors such as this? Is there a way to print the error file and continue processing the next shapefile in the for loop to completion?
import arcpyfrom arcpy import env# Allow overwriting of output env.overwriteOutput = True# Parameters env.workspace = arcpy.GetParameterAsText(0) state = arcpy.GetParameterAsText(1)gdb = arcpy.GetParameterAsText(2)# Get a list of shapefiles in folder fcs = arcpy.ListFeatureClasses() # Find the total count of shapefiles in list fcCount = len(fcs) # Set the progressor arcpy.SetProgressor("step", "Copying shapefiles to geodatabase...", 0,fcCount, 1) # For each shapefile, copy to a file geodatabasetry: for shp in fcs: # Define name for the output points fc = str(state + shp[0:9]) # Update the progressor label for current shapefile arcpy.SetProgressorLabel("Loading " + shp + "...") # Copy the data arcpy.CopyFeatures_management(shp, str(gdb + "\\" + fc)) # Update the progressor position arcpy.SetProgressorPosition()except Exception as e: print "An error has occurred" print earcpy.ResetProgressor()
أكثر...
How do you handle errors such as this? Is there a way to print the error file and continue processing the next shapefile in the for loop to completion?
import arcpyfrom arcpy import env# Allow overwriting of output env.overwriteOutput = True# Parameters env.workspace = arcpy.GetParameterAsText(0) state = arcpy.GetParameterAsText(1)gdb = arcpy.GetParameterAsText(2)# Get a list of shapefiles in folder fcs = arcpy.ListFeatureClasses() # Find the total count of shapefiles in list fcCount = len(fcs) # Set the progressor arcpy.SetProgressor("step", "Copying shapefiles to geodatabase...", 0,fcCount, 1) # For each shapefile, copy to a file geodatabasetry: for shp in fcs: # Define name for the output points fc = str(state + shp[0:9]) # Update the progressor label for current shapefile arcpy.SetProgressorLabel("Loading " + shp + "...") # Copy the data arcpy.CopyFeatures_management(shp, str(gdb + "\\" + fc)) # Update the progressor position arcpy.SetProgressorPosition()except Exception as e: print "An error has occurred" print earcpy.ResetProgressor()
أكثر...