Ich habe ein GIS-Skript-Tool, das eine Kopie eines mxd erstellt, eine Definitionsabfrage festlegt und eine Reihe datengesteuerter Seiten basierend auf der Definitionsabfrage exportiert. Nach dem Export werden die mxd-Kopie, einige Variablen und eine Reihe von Datenbankverbindungen gelöscht.
Gibt es eine Möglichkeit, einen Escape-Code zu codieren, der die datengesteuerten Seitenexporte abbricht, wo immer sie sich befinden, aber anstatt das gesamte Skript abzubrechen, würde er einfach zum Ende springen und trotzdem die mxd-Kopie usw. löschen. Der Codeblock sieht ungefähr so aus diese:
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)
Grundsätzlich möchte ich in der Lage sein, die Taste "Q" (oder eine beliebige Taste) zu drücken, und die PDF-Exportschleife würde unterbrochen und der Block del / Delete_management würde weiterhin ausgeführt. Ich denke nicht, dass es möglich ist, da das Skript über ein Tool ausgeführt wird, aber ich dachte, ich würde sehen, ob es so ist, als würde es mich davon abhalten, Dinge manuell zu löschen, wenn ich mich entscheide, den Export vorzeitig zu stoppen.
Ich verwende ArcGIS Desktop 10.4.
quelle
Antworten:
Schauen Sie hier .
Kurz gesagt, Ihr Code sollte folgendermaßen aussehen:
Gemäß der verknüpften Stapelüberlauffrage sollte Strg-C funktionieren, um KeyboardInterrupt auszulösen.
quelle