Saya memiliki alat skrip GIS yang membuat salinan mxd, menetapkan kueri definisi, dan mengekspor satu set halaman yang didorong data berdasarkan kueri definisi. Setelah selesai mengekspor menghapus salinan mxd, beberapa variabel dan banyak koneksi database.
Apakah ada beberapa cara untuk kode kode pelarian yang akan membatalkan ekspor halaman data didorong di mana pun mereka berada, tetapi bukannya membatalkan seluruh skrip, itu hanya akan melompat ke ujung dan masih menghapus salinan mxd dll. Blok kode terlihat seperti ini:
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)
Pada dasarnya saya ingin dapat menekan tombol "Q" (atau kunci apa pun) dan loop ekspor pdf akan rusak dan blok del / Delete_management masih akan berjalan. Saya tidak berpikir itu mungkin karena menjalankan skrip melalui alat tapi saya pikir saya akan melihat apakah itu akan menghentikan saya dari keharusan untuk secara manual menghapus sesuatu jika saya memutuskan untuk menghentikan ekspor lebih awal.
Saya menggunakan ArcGIS Desktop 10.4.
sumber
Jawaban:
Coba lihat di sini .
Singkatnya, kode Anda akan terlihat seperti ini:
Menurut pertanyaan Stack Overflow yang ditautkan, Ctrl-C harus berfungsi untuk menonaktifkan KeyboardInterrupt.
sumber