2011-07-19 13 views
6

में अंतिम कमांड की निकास स्थिति की जांच करें क्या कोई जानता है कि ipython में अंतिम निष्पादित कमांड (निकास कोड) की स्थिति को कैसे जांचें?ipython

+2

क्या आप os.system जैसे कुछ का उपयोग कर अजगर के भीतर कमांड को देख रहे हैं? या आप कमांड foo चला रहे हैं, और फिर अपनी पायथन लिपि चला रहे हैं? – Zoredache

+0

केवल ipython को शैल के रूप में उपयोग करते हुए, और Evangelion संदर्भ के लिए cmd – piotr

उत्तर

6

मुझे लगता है कि आप ! भागने का उपयोग कर IPython से आदेश चलाने के बारे में बात कर रहे हैं:

In[1]: !echo hello 
hello 

In[2]: 

गूगल का उपयोग करते हुए मैं प्रलेखन पाया जाता है और आदेश के निकास स्थिति का कोई जिक्र नहीं कहीं भी कब्जा कर लिया जा रहा है। dir() का उपयोग करके मैंने एक वेरिएबल नाम की तलाश की जो उस जानकारी को पकड़ रहा हो और मुझे कुछ भी नहीं मिला। मैंने x = !ls वाक्यविन्यास और x को आदेश से आउटपुट लाइनों की सूची में सेट करने की कोशिश की; वहां कोई बाहर निकलने की स्थिति नहीं है।

संक्षेप में, मुझे नहीं लगता कि आईपीथॉन भी इस जानकारी को कैप्चर कर रहा है। इस बिंदु पर मैं कुछ भी पता लगाने की कोशिश करने के लिए आईपीथॉन को स्रोत कोड देखना चाहता हूं।

आप हमेशा os.system() के साथ आदेश चला सकते हैं और उस से बाहर निकलने की स्थिति प्राप्त कर सकते हैं।

In[1]: !launch_eva 
launch_eva: could not open AT Field 

In[2]: import os 
In[3]: exit_status = os.system("launch_eva") 
launch_eva: could not open AT Field 

In[4]: exit_status 
3 

In[5]: 

इस प्रकार हम आदेश launch_eva बाहर निकलें स्थिति 3 लौटा रहा है जब यह क्षेत्र में एक खुला नहीं कर सकते हैं।

ऐसा लगता है कि यह कुछ ऐसा है जो आईपीथन को बचाया जाना चाहिए। बहुत सारे छिपे हुए चर हैं। आपको इसके बारे में एक फीचर अनुरोध दर्ज करना चाहिए।

नोट: यह उबंटू पर आईपीथन 0.10.1 में परीक्षण किया गया था। "पियट्र" द्वारा एक और जवाब, कहता है कि रिलीज के कारण जल्द ही आईपीथन 0.11 में निकास कोड पकड़ा जाएगा। मैंने https://github.com/ipython/ipython.git पर गिट भंडार से स्रोत कोड को क्लोन किया और python ipython.py के साथ इसका परीक्षण किया; जैसा कि पियेटर ने कहा था, बाहर निकलने की स्थिति _exit_status नामक चर में सहेजी गई है।

+1

+1 के साथ चल रहे आदेश। :) –

+0

मुझे आश्चर्य हुआ कि अगर कोई नोटिस करेगा और इसका आनंद लेगा। :-) – steveha

13

कमांड चलाने के बाद इसे _exit_code के रूप में संग्रहीत किया जाना चाहिए (कम से कम आगामी v0.11 रिलीज़ में)।

+1

इस जानकारी के लिए धन्यवाद! मैंने इसे ऊपर उठाया। – steveha

+2

0.13.2 के रूप में, यह काम करता है, लेकिन अगर मैं "a =! False" के साथ stdout को कैप्चर नहीं करता (यदि मैं stdout '_exit_code' को कैप्चर नहीं करता)। कोई समाधान जानता है कि कोई समाधान है? –

संबंधित मुद्दे