ฉันมีสคริปต์ Python สำหรับ ArcGIS ที่ฉันใช้งานอยู่และฉันต้องการให้สคริปต์หยุดทำงานหากไม่มีข้อมูลที่จำเป็นอยู่ ฉันลอง sys.exit () โดยตรง แต่นั่นจะให้ข้อยกเว้นใน ArcMap ที่ฉันต้องการหลีกเลี่ยง ฉันพบกระทู้นี้ที่แนะนำให้ใช้บล็อกลองดังนั้นฉันทำฟังก์ชั่นนี้:
def quit_script(message):
log_msg(message) # already defined; writes a message to a file
if log_loc:
output.close() # close the file used with log_msg()
try:
sys.exit()
except SystemExit:
pass
น่าเสียดายที่มันไม่ได้ผลเช่นกัน มันไม่ได้ทำให้เกิดข้อผิดพลาดบน ArcMap อีกต่อไป แต่ก็ไม่ได้เช่นกันเลิกกัน ตอนนี้ฉันมีรหัสจำนวนมากของฉันในคำสั่ง if / else แต่มันก็น่าเกลียด ใครมีข้อเสนอแนะอื่น ๆ ?
ขอบคุณ! ไบรอัน
ในทางทฤษฎี sys.exit (0) เป็นการดำเนินการที่สำเร็จแล้วออกจาก - ดูmsdn.microsoft.com/en-us/library/ms681381.aspx - แต่เหมือน Michael ฉันไม่ได้อยู่ใกล้ ArcGIS ดังนั้นฉันจึงไม่สามารถบอกคุณได้ว่ามันเป็นอย่างไร จัดการ
—
om_henners
คุณได้ลองยกระบบออกแล้วหรือยัง? ฉันมีโปรแกรมหลามฉันเขียนที่ฉันใช้วิธีนี้ในคำสั่ง if โดยพยายามรับรายการคุณสมบัติในเวิร์กสเปซและหากส่งคืนรายการว่างเปล่าจะมีการเรียกใช้ระบบอื่นเพิ่มขึ้น (ใช้งานได้ดี - ฉันมีจำนวนมาก เอาต์พุตของล็อกไฟล์และการพิมพ์ก็เกิดขึ้นเช่นกันดังนั้นฉันจึงสามารถบอกได้ว่าทำไมโปรแกรมถึงออก) อาจมีหลายวิธีในการทำเช่นนี้และอาจจะดีกว่านี้ แต่วิธีนี้ทำในสิ่งที่ฉันคาดไว้ / อยากให้ทำ
—
turkishgold
คุณเห็นตัวอย่างในเธรด GSE นี้ gis.stackexchange.com/questions/1015/ หรือไม่