Tengo una herramienta de script GIS que crea una copia de un mxd, establece una consulta de definición y exporta un conjunto de páginas basadas en datos basadas en la consulta de definición. Una vez que finaliza la exportación, elimina la copia mxd, algunas variables y un montón de conexiones de bases de datos.
¿Hay alguna forma de codificar un código de escape que cancele las exportaciones de páginas controladas por datos donde sea que estén, pero en lugar de cancelar todo el script, simplemente saltaría al final y aún eliminaría la copia mxd, etc. El bloque de código se parece a algo como esta:
mxd = arcpy.mapping.MapDocument(mxd_master)
mxd_folder = os.path.dirname(mxd_master)
mxd_copy = mxd_folder + "\\WORKING.mxd"
mxd.saveACopy(mxd_copy)
mxd = arcpy.mapping.MapDocument(mxd_copy)
ddp = mxd.dataDrivenPages
for page_num in range (1, ddp.pageCount + 1):
ddp.currentPageID = page_num
row = ddp.pageRow
mapsheet = row.getValue(ddp.pageNameField.name)
arcpy.mapping.ExportToPDF(pdf export parameters....)
del mxd, mxd_master
arcpy.Delete_management(mxd_copy)
Básicamente quiero poder presionar la tecla "Q" (o cualquier tecla) y el bucle de exportación de pdf se rompería y el bloque del / Delete_management aún se ejecutaría. No creo que sea posible ya que está ejecutando el script a través de una herramienta, pero pensé que vería si era así, ya que me impediría tener que eliminar manualmente las cosas si decido detener la exportación antes.
Estoy usando ArcGIS Desktop 10.4.
fuente
Respuestas:
Echa un vistazo aquí .
En resumen, su código debería verse así:
De acuerdo con la pregunta de desbordamiento de pila vinculada, Ctrl-C debería funcionar para activar KeyboardInterrupt.
fuente