पायथन के साथ स्क्रिप्ट से बाहर निकलें


11

मुझे ArcGIS के लिए एक पायथन स्क्रिप्ट मिली है, जिस पर मैं काम कर रहा हूं, और यदि आवश्यक डेटा उपलब्ध नहीं है तो मैं स्क्रिप्ट छोड़ने की क्षमता रखना चाहता हूं। मैंने सीधे sys.exit () की कोशिश की, लेकिन वह आर्कपैक में एक अपवाद देगा जिससे मैं बचना चाहूंगा। मुझे यह थ्रेड मिला जो एक कोशिश ब्लॉक का उपयोग करने का सुझाव देता है, इसलिए मैंने यह फ़ंक्शन बनाया:

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

दुर्भाग्य से, यह भी काम नहीं किया। खैर, यह अब आर्कपैक पर वह त्रुटि नहीं करता है, लेकिन यह भी नहीं है, ठीक है, छोड़ दिया। अभी, मेरे पास if / if स्टेटमेंट में मेरे कोड का बल्क है, लेकिन यह बदसूरत है। किसी के पास कोई और सुझाव है?

धन्यवाद! ब्रायन


सिद्धांत रूप में sys.exit (0) एक ऑपरेशन सफलतापूर्वक पूरा हो गया है - देखें msdn.microsoft.com/en-us/library/ms681381.aspx - लेकिन माइकल की तरह मैं आर्कगिस के पास नहीं हूं इसलिए मैं आपको बता नहीं सकता कि यह कैसा है संभाला।
om_henners

क्या आपने सिस्टमएक्सिट जुटाने की कोशिश की है? मेरे पास एक पायथन कार्यक्रम है, जिसमें मैंने लिखा है कि अगर मैं कार्यक्षेत्र में सुविधाओं की सूची प्राप्त करने की कोशिश करके इस कथन का उपयोग करता हूं, और यदि यह एक खाली सूची देता है तो अन्य कॉल सिस्टेक्सिट बढ़ाता है (महान काम करता है - मेरे पास बहुत सारे हैं लॉग फ़ाइल आउटपुट और प्रिंटिंग चल रही है, इसलिए मैं बता सकता हूं कि कार्यक्रम से बाहर क्यों हुआ)। शायद ऐसा करने के कई तरीके और शायद इससे भी बेहतर तरीके, लेकिन यह वही करता है जो मैं उम्मीद करता था / मैं चाहता था।
सितंबर

4
क्या आपने इस GSE थ्रेड में उदाहरण देखे हैं gis.stackexchange.com/questions/1015/…

जवाबों:


2

नहीं, आप जिस ब्लॉक को चाहते हैं, उसे छोड़कर / बाहर निकलें। तो अपनी कोशिश में आप कुछ इस तरह से करेंगे:

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

यह दर्ज करेगा यदि आपका 'यदि' कथन विफल रहता है।


मैंने सोचा कि केवल रन के अलावा जब कोई त्रुटि होती है?
क्रिस स्टेट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.