¿Se pueden mostrar las declaraciones de impresión generadas a partir de una excepción personalizada en la ventana Resultados de geoprocesamiento?
Modifiqué una secuencia de comandos que encontré que toma dos entradas de un usuario, encuentra la función asociada y luego la amplía. La herramienta funciona bien. Estoy tratando de hacerlo más fácil de usar formateando automáticamente las entradas para que tengan la cantidad correcta de caracteres. Agregué un cuadro de mensaje que le dice al usuario si tiene demasiados caracteres en el cuadro de entrada, pero usé easygui para crear eso (una biblioteca de Python para GUI). En cambio, me gustaría usar la ventana de resultados de gp para mostrar el mensaje. Pensé que formateé correctamente las declaraciones de aumento y excepción, pero la herramienta se ejecuta y obtengo un resultado completo y no mi mensaje de error. Probé la ayuda de arcpy de esri y no obtuve los resultados que estaba buscando.
class BadInputError(Exception):
pass
# Import arcpy module
import arcpy, sys, string
from arcpy import env
try:
def checkInput(inp):
mNCount = len(inp)
trigger = 0
while trigger == 0:
if mNCount == 4:
trigger = 1
elif mNCount > 4:
inp = ''
trigger = -1
raise BadInputError
elif mNCount == 3:
inp = '0' + inp
trigger = 1
elif mNCount == 2:
inp = '00' + inp
trigger = 1
elif mNCount == 1:
inp = '000' + inp
trigger = 1
return inp
# Script arguments
MapNumber = arcpy.GetParameterAsText(0)
MapNumber = checkInput(MapNumber)
ParcelNumber = arcpy.GetParameterAsText(1)
ParcelNumber = checkInput(ParcelNumber)
Expression = (""" "MAP" = '%s' AND "PARCEL" = '%s'""") %(MapNumber,ParcelNumber)
# Local variables:
GISData_GISDATA_CAD_PARCEL2009_WHOLE = "Database Connections\\GISUser.sde\\GISData.GISDATA.CAD_PARCEL2009_WHOLE"
Output_Layer_Name = Expression
Output_Layer = "ParcelSelection"
# Process: Select Layer By Attribute
arcpy.SelectLayerByAttribute_management("2009 Parcel Points", "NEW_SELECTION", Expression)
# Zoom to Selected Features
mxd = arcpy.mapping.MapDocument('CURRENT')
df = arcpy.mapping.ListDataFrames(mxd, "Layers") [0]
df.zoomToSelectedFeatures()
df.scale = 8000
arcpy.RefreshActiveView()
except BadInputError:
print "Too many characters. Run again"
except Exception, e:
# If an error occurred, print line number and error message
import traceback, sys
tb = sys.exc_info()[2]
print "Line %i" % tb.tb_lineno
print e.message