में अंतिम कमांड की निकास स्थिति की जांच करें क्या कोई जानता है कि ipython में अंतिम निष्पादित कमांड (निकास कोड) की स्थिति को कैसे जांचें?ipython
ipython
उत्तर
मुझे लगता है कि आप !
भागने का उपयोग कर 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 के साथ चल रहे आदेश। :) –
मुझे आश्चर्य हुआ कि अगर कोई नोटिस करेगा और इसका आनंद लेगा। :-) – steveha
कमांड चलाने के बाद इसे _exit_code
के रूप में संग्रहीत किया जाना चाहिए (कम से कम आगामी v0.11 रिलीज़ में)।
इस जानकारी के लिए धन्यवाद! मैंने इसे ऊपर उठाया। – steveha
0.13.2 के रूप में, यह काम करता है, लेकिन अगर मैं "a =! False" के साथ stdout को कैप्चर नहीं करता (यदि मैं stdout '_exit_code' को कैप्चर नहीं करता)। कोई समाधान जानता है कि कोई समाधान है? –
क्या आप os.system जैसे कुछ का उपयोग कर अजगर के भीतर कमांड को देख रहे हैं? या आप कमांड foo चला रहे हैं, और फिर अपनी पायथन लिपि चला रहे हैं? – Zoredache
केवल ipython को शैल के रूप में उपयोग करते हुए, और Evangelion संदर्भ के लिए cmd – piotr