Saya memiliki alat skrip berguna yang loop melalui ruang kerja dan mengubah nama dan menyalin shapefile ke dataset fitur. Namun, jika ada shapefile rusak di suatu tempat di ruang kerja skrip gagal dan berhenti diproses.
Bagaimana Anda menangani kesalahan seperti ini? Apakah ada cara untuk mencetak file kesalahan dan melanjutkan memproses shapefile berikutnya dalam for loop sampai selesai?
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()
Seperti yang sudah dikatakan Stephen, Anda dapat menyertakan Alat CopyFeatures di percobaan lain ... kecuali Blokir.
Jika alat gagal dengan Shapefile tertentu, Anda dapat mencatat Pesan Alat di suatu tempat (saya selalu mencetaknya di STDOUT dan menyalurkan output ke logfile ketika saya menjalankan skrip).
Yang harus saya tambahkan adalah: Di Blok Kecuali di samping Pengecualian Anda juga harus mencetak pesan kesalahan yang dihasilkan Alat itu sendiri. Anda tidak mendapatkan akses ke pesan Alat dengan Pengecualian (seperti yang seharusnya sudah pasti) tetapi dari objek arcpy dengan menelepon
Lihat http://help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#//000v0000000m000000 cara memanggilnya dan cara mendapatkan pesan terakhir yang mungkin terkait dengan Kesalahan Shapefile spesifik.
Setelah masuk ini, Anda cukup membiarkan skrip melanjutkan dengan shapefile lainnya
sumber