Menambahkan perintah keluar ke alat skrip ArcGIS Python?

8

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.

Maddison Lussin
sumber
4
@Maddison Saya belum mencoba ini sehingga tidak memposting jawaban, tapi saya pikir Anda harus melihat pada topik Bantuan ArcGIS Memahami perilaku pembatalan dalam alat skrip .
user2856
Bisakah Anda mengedit pertanyaan dan menentukan versi ArcGIS Desktop mana yang Anda gunakan. Lihat juga gis.stackexchange.com/q/172598/2856
user2856
Terima kasih atas tautannya dan saya akan memperbarui pertanyaannya sekarang.
Maddison Lussin

Jawaban:

2

Coba lihat di sini .

Singkatnya, kode Anda akan terlihat seperti ini:

 # Start of code

 try:
      #for loop
 except KeyboardInterrupt:
      pass

 #Rest of code

Menurut pertanyaan Stack Overflow yang ditautkan, Ctrl-C harus berfungsi untuk menonaktifkan KeyboardInterrupt.

PT Curran
sumber