Üzerinde çalıştığım ArcGIS için bir Python betiğim var ve gerekli veriye sahip değilse betiği bırakma yeteneğine sahip olmak istiyorum. Düz bir sys.exit () denedim ama bu ArcMap içinde önlemek istiyorum bir istisna verecektir. Ben bir try bloğu kullanmanızı önerir Bu iş parçacığı bulundu , bu yüzden bu işlevi yaptı:
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
Ne yazık ki, bu da işe yaramadı. Artık ArcMap üzerinde bu hatayı yapmıyor, ama aynı zamanda vazgeçmiyor. Şu anda, bir if / else deyiminde kodumu toplu var, ama bu çirkin. Başka önerisi olan var mı?
Teşekkürler! Brian
Teoride sys.exit (0) başarıyla tamamlanan bir işlemdir - bkz. Msdn.microsoft.com/en-us/library/ms681381.aspx - ama Michael gibi ArcGIS yakınında değilim, bu yüzden size nasıl olduğunu söyleyemedim ele.
—
om_henners
Systemexit'i yükseltmeyi denediniz mi? Bir çalışma alanındaki özelliklerin bir listesini almaya çalışarak bir if deyiminde bu yaklaşımı kullandığım yazdığım bir python programım var ve boş bir liste döndürürse başka yükseltmek çağırır systemexit (harika çalışır - bir sürü var günlük dosyası çıktı ve baskı da devam böylece program neden çıktığını söyleyebilirim). Muhtemelen bunu yapmak için birden fazla yol ve belki de daha iyi yollar, ama bu beklediğim / yapmasını istediğim şeyi yapıyor.
—
turkishgold
Bu GSE iş parçacığında örnekleri gördünüz mü gis.stackexchange.com/questions/1015/…