Thêm lệnh thoát vào công cụ kịch bản Python ArcGIS?


8

Tôi có một công cụ tập lệnh GIS tạo một bản sao của mxd, đặt truy vấn định nghĩa và xuất một tập hợp các trang điều khiển dữ liệu dựa trên truy vấn định nghĩa. Sau khi xuất xong, nó xóa bản sao mxd, một số biến và một loạt các kết nối cơ sở dữ liệu.

Có cách nào để mã hóa mã thoát sẽ hủy các trang được điều khiển dữ liệu xuất bất cứ nơi nào nhưng thay vì hủy toàn bộ tập lệnh, nó sẽ chỉ nhảy đến cuối và vẫn xóa bản sao mxd, v.v. Khối mã trông giống như điều này:

    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)

Về cơ bản tôi muốn có thể nhấn phím "Q" (hoặc bất kỳ phím nào) và vòng xuất pdf sẽ bị hỏng và khối del / Delete_man quản lý vẫn sẽ chạy. Tôi không nghĩ là có thể vì nó chạy tập lệnh thông qua một công cụ nhưng tôi đoán rằng tôi sẽ xem liệu nó có ngăn tôi khỏi phải xóa thủ công nếu tôi quyết định dừng xuất sớm không.

Tôi đang sử dụng ArcGIS Desktop 10.4.


4
@Maddison Tôi chưa thử điều này nên không đăng câu trả lời, nhưng tôi nghĩ bạn nên xem qua chủ đề Trợ giúp ArcGIS Tìm hiểu hành vi hủy trong các công cụ tập lệnh .
dùng2856

Bạn có thể chỉnh sửa câu hỏi của mình không và chỉ định phiên bản ArcGIS Desktop nào bạn đang sử dụng. Xem thêm gis.stackexchange.com/q/172598/2856
dùng2856

Cảm ơn bạn đã liên kết và tôi sẽ cập nhật câu hỏi ngay bây giờ.
Maddison Lussin

Câu trả lời:


2

Hãy nhìn vào đây .

Trong ngắn hạn, mã của bạn sẽ trông như thế này:

 # Start of code

 try:
      #for loop
 except KeyboardInterrupt:
      pass

 #Rest of code

Theo câu hỏi Stack Overflow được liên kết, Ctrl-C sẽ hoạt động để tắt KeyboardInterrupt.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.