J'ai un outil de script pratique qui parcourt un espace de travail et renomme et copie les fichiers de formes dans un jeu de données d'entité. Cependant, s'il existe un fichier de formes corrompu quelque part dans l'espace de travail, le script échoue et arrête le traitement.
Comment gérez-vous des erreurs comme celle-ci? Existe-t-il un moyen d'imprimer le fichier d'erreur et de poursuivre le traitement du fichier de formes suivant dans la boucle for jusqu'à la fin?
import arcpy
from 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 geodatabase
try:
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 e
arcpy.ResetProgressor()
Comme Stephen l'a déjà dit, vous pouvez inclure l'outil CopyFeatures dans un autre essai ... sauf Block.
Si l'outil échoue avec un fichier de formes spécifique, vous pouvez enregistrer le message d'outil quelque part (je l'imprime toujours sur STDOUT et je dirige les sorties vers un fichier journal lorsque j'exécute le script).
Ce que je dois ajouter est le suivant: dans le bloc sauf à côté de l'exception, vous devez également imprimer les messages d'erreur que l'outil lui-même a produits. Vous n'avez pas accès aux messages de l'outil par l'exception (comme cela devrait être sûr) mais à partir de l'objet arcpy en appelant
Voir http://help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#//000v0000000m000000 comment l'appeler et comment obtenir les derniers messages éventuellement liés à l'erreur Shapefile spécifique.
Après avoir enregistré cela, vous laissez simplement le script continuer avec les autres fichiers de formes
la source