Python ile komut dosyasından çık


11

Ü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

4
Bu GSE iş parçacığında örnekleri gördünüz mü gis.stackexchange.com/questions/1015/…

Yanıtlar:


2

Hayır, isteyeceğiniz try / hariç blok çıkış çağrınızı 'yakala'; yani denemenizde böyle bir şey yaparsınız:

try:
    if arcpy.Exists(parcelOutput):
    arcpy.AddMessage("Calculating Parcel Numbers")    
except:
    raise sys.exit("Error: " + arcpy.GetMessages(x))

'İf' ifadeniz başarısız olursa bu dosyalanır.


Sadece yakalamak için bir hata olduğunda çalışır dışında düşündüm?
Chris Stayte
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.