अजगर कमांड लाइन से बाहर निकलना


152

पायथन कमांड लाइन से बाहर निकलने के लिए, मुझे बाहर निकलना होगा ()। अगर मैं बाहर निकलता हूं, तो यह कहता है

Use exit() or Ctrl-Z plus Return to exit

आमतौर पर जब आप टाइप करते हैं exit, तो आप प्रोग्राम से बाहर निकलना चाहेंगे। जब मुझे पता है कि मैं कमांड लाइन से बाहर निकलने की कोशिश कर रहा हूं, तो दुभाषिया मुझे उपरोक्त त्रुटि क्यों देता है? यह सिर्फ बाहर क्यों नहीं निकलता है मुझे पता है कि इससे कोई फर्क नहीं पड़ता और यह एक मूर्खतापूर्ण सवाल है लेकिन मैं उत्सुक हूं।


यह कैसे कार्यों को अक्सर ()अंत में कहा जाता है के साथ करना पड़ सकता है ... अन्यथा, यह (संभवतः) एक चर हो सकता है ... या किसी प्रकार की वस्तु ...
0

सही है, लेकिन दुभाषिया जानता है कि मैं बाहर निकलने की कोशिश कर रहा हूँ और यही कारण है कि उस संदेश को प्रिंट करता है। अन्यथा यह एक त्रुटि संदेश मुद्रित होता। अगर यह जानता है कि मैं बाहर निकलने की कोशिश कर रहा हूं, तो यह बाहर निकल सकता है।
अंक

1
बाहर निकलना या बाहर निकलना () मेरे लिए दुनिया में पाए गए 20% इंस्टॉलेशन के लिए एक त्रुटि देता है ... केवल CTRL + Z + लगातार काम करता है।
पाउलो कार्वाल्हो

जवाबों:


37

मेरे अजगर दुभाषिया exitमें वास्तव में एक स्ट्रिंग है और एक फ़ंक्शन नहीं है - 'Use Ctrl-D (i.e. EOF) to exit.'। आप दर्ज करके अपने दुभाषिया पर जाँच कर सकते हैंtype(exit)

सक्रिय अजगर में क्या हो रहा है कि बाहर निकलना एक कार्य है। यदि आप फ़ंक्शन को कॉल नहीं करते हैं, तो यह ऑब्जेक्ट के स्ट्रिंग प्रतिनिधित्व को प्रिंट करेगा। यह किसी भी वस्तु को लौटाने के लिए डिफ़ॉल्ट व्यवहार है। यह सिर्फ इतना है कि डिजाइनरों ने सोचा कि लोग दुभाषिया से बाहर निकलने के लिए बाहर निकलने की कोशिश कर सकते हैं, इसलिए उन्होंने निकास समारोह के स्ट्रिंग प्रतिनिधित्व को एक सहायक संदेश बना दिया। आप इस व्यवहार को टाइप करके str(exit)या यहां तक ​​कि देख सकते हैं print exit


14
Ctrl-Z वही है जो आप विंडोज पर करते हैं (अच्छी तरह से, डॉस) जहां आप यूनिक्स जैसे सिस्टम पर Ctrl-D करेंगे।
१०:१० पर कार्ल क्नेटेल

@KarlKnechtel आह, जानकर अच्छा लगा। मुझे विंडोज़ पर प्रोग्रामिंग का बहुत कम अनुभव है।
टिब्बा

60

यह मेरे लिए काम करता है, अजगर प्रांप्ट से बाहर आने का सबसे अच्छा तरीका है।

बाहर जाएं()


4
मैं इस जवाब के बारे में उलझन में हूँ ... सवाल खुद कहते हैं कि वे पहले से ही जानते हैं कि exit()काम करता है, और वे जानना चाहते हैं कि exitबिना परेंस के काम क्यों नहीं होता। तो यह जवाब सिर्फ सवाल का हिस्सा है और वास्तव में इसका जवाब नहीं है।
बेन ली

मैं इस सवाल को नहीं पढ़ने के लिए इस जवाब को नीचा दिखाना चाहता हूं, लेकिन मुझे लगता है कि अधिकांश अजगर प्रतिष्ठानों के लिए यह सही है; यह सिर्फ इतना है कि उपयोगकर्ता ने कहा कि यह उनके मामले में काम नहीं करता है, इसलिए इसकी सिफारिश करना ... अनुचित लगता है।
person27

37

जब आप exitकमांड लाइन में टाइप करते हैं, तो यह उस नाम के साथ चर पाता है और उस पर कॉल __repr__(या __str__) करता है। आमतौर पर, आपको एक परिणाम मिलेगा:

<function exit at 0x00B97FB0>

लेकिन उन्होंने exitऑब्जेक्ट के बदले उस फ़ंक्शन को फिर से परिभाषित करने का फैसला किया, बजाय एक उपयोगी संदेश प्रदर्शित करने के। यह एक मूर्खतापूर्ण व्यवहार है या नहीं, एक व्यक्तिपरक सवाल है, लेकिन एक संभावित कारण है कि यह "सिर्फ बाहर निकलना" नहीं है:

मान लीजिए कि आप डिबगर में कुछ कोड देख रहे हैं, उदाहरण के लिए, और ऑब्जेक्ट में से एक exitफ़ंक्शन को संदर्भित करता है। जब डीबगर __repr__उस फ़ंक्शन को आपके पास प्रदर्शित करने के लिए उस ऑब्जेक्ट पर कॉल करने का प्रयास करता है , तो प्रोग्राम अचानक बंद हो जाता है! यह वास्तव में अप्रत्याशित होगा, और काउंटर के उपाय जो आगे की चीजों को जटिल कर सकते हैं (उदाहरण के लिए, भले ही आप उस व्यवहार को कमांड लाइन तक सीमित कर दें, क्या होगा यदि आप exitएक विशेषता के रूप में कुछ ऑब्जेक्ट को प्रिंट करने की कोशिश करते हैं ?)


4
इस मामले में, वास्तविक निकास समारोह तब तक दायरे में नहीं होता है जब तक कि आप import sys, जिसके बाद आप दुभाषिया से बाहर निकलने के लिए sys.exit () कहेंगे।
माइकल डिलन

19

यह संदेश की __str__विशेषता हैexit

इन उदाहरणों को देखो :

1

>>> print exit
Use exit() or Ctrl-D (i.e. EOF) to exit

2

>>> exit.__str__()
'Use exit() or Ctrl-D (i.e. EOF) to exit'

3

>>> getattr(exit, '__str__')()
'Use exit() or Ctrl-D (i.e. EOF) to exit'

19

मैं आपको पायथन दुभाषिया से बाहर निकलने की सलाह देता हूं Ctrl-D। यह एंड-ऑफ-फ़ाइल या एंड-ऑफ़-ट्रांसमिशन के लिए पुराना ASCII कोड है।


यदि स्क्रिप्ट त्रुटि में चली गई तो यह विधि काम नहीं करती है।
ब्लेकब्लॉक

2
Ctrl-Breakविंडोज में लगातार काम करता है। Ctrl-Dया Ctrl-Zपायथन 2.7, 3.4, 3.6 के लिए विंडोज में काम किया। लेकिन पायथन 3.7 में इन लोगों ने काम करना बंद कर दिया और सबसे छोटा एएससीआईआई अनुक्रम जो बाहर निकलता है Ctrl-Z Enter
बॉब स्टीन

14

विंडोज उपयोग पर एनाकोंडा 4.5+ और पायथन 3.6+ के साथ

Ctrl+Z

या

exit()

कुछ मामलों में, आपको उपयोग करना पड़ सकता है

Ctrl+Break

अगर आपके कंप्यूटर में Breakचाबी नहीं है तो यहाँ देखें


8

क्योंकि दुभाषिया एक शेल नहीं है जहां आप कमांड प्रदान करते हैं, यह अच्छी तरह से - एक दुभाषिया है। जो चीजें आप इसे देते हैं, वे पायथन कोड हैं।

अजगर का वाक्य-विन्यास ऐसा है exit, जो अपने आप में, संभवतः किसी वस्तु के लिए नाम के अलावा और कुछ नहीं हो सकता है। बस एक वस्तु का जिक्र वास्तव में कुछ भी नहीं कर सकता है (सामान्य रूप से रीड-इवल-प्रिंट लूप को छोड़कर; जो वस्तु का एक स्ट्रिंग प्रतिनिधित्व प्रदर्शित करता है)।


6

आप इसे ठीक कर सकते हैं।

PYTHONSTARTUPनिम्नलिखित के साथ एक अजगर फ़ाइल से लिंक करें

# Make exit work as expected
type(exit).__repr__ = type(exit).__call__

यह कैसे काम करता है?

अजगर कमांड लाइन एक रीड-असेसमेंट-प्रिंट-लूप है, जब आप टेक्स्ट टाइप करते हैं तो वह उस टेक्स्ट को पढ़ेगा, उसका मूल्यांकन करेगा, और अंत में परिणाम प्रिंट करेगा।

जब आप टाइप करते हैं तो exit()यह एक site.Quitterकॉल करने योग्य ऑब्जेक्ट के प्रकार का मूल्यांकन करता है और इसके __call__फ़ंक्शन को कॉल करता है जो सिस्टम से बाहर निकलता है। जब आप टाइप करते हैं तो exitयह उसी कॉल करने योग्य ऑब्जेक्ट का मूल्यांकन करता है, बिना कॉल किए ऑब्जेक्ट को प्रिंट किया जाता है जो बदले __repr__में ऑब्जेक्ट पर कॉल करता है।

हम इसका लाभ उठाकर इससे जुड़ __repr__सकते हैं __call__और इस प्रकार हम exitबिना कोष्ठक के टाइप करते हुए भी सिस्टम से बाहर निकलने का अपेक्षित व्यवहार प्राप्त कर सकते हैं ।


4
उन्होंने exit"सहायक" स्ट्रिंग को मुद्रित करने का प्रयास किया , लेकिन वे इसे प्राकृतिक चीज़ करने और दुभाषिया से बाहर निकलने के लिए बाध्य नहीं कर सके। हर बार कोष्ठकों को टाइप करने के लिए मजबूर होने के कारण निराशा होती है। यह उत्तर एकदम सही है और इसके बजाय स्वीकार किया जाना चाहिए।
प्रेज़ेमेक डी

3

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

exit()

कृपया ध्यान दें कि यह एक फ़ंक्शन है जिसे अधिकांश उपयोगकर्ता कहते हैं, बिना कॉल किए बाहर निकलने के साथ इसे मिलाते हैं, लेकिन नए पायथन टर्मिनल एक संदेश दिखाते हैं ...

या शॉर्टकट के रूप में, दबाएँ:

Ctrl + D

आपके कीबोर्ड पर ...

ctrl + D


1
आपके द्वारा कही गई हर बात पहले से ही ऊपर के जवाबों में शामिल हो गई है।
प्रेज़ेमेक डी

0

यदि आप अजगर कमांड लाइन में फंस गए हैं और उपरोक्त समाधानों में से कोई भी आपके लिए काम नहीं करता है, तो प्रयास करें exit(2)


-1

"निकास" एक वैध चर नाम है जिसका उपयोग आपके पायथन कार्यक्रम में किया जा सकता है। आप दुभाषिया से बाहर नहीं निकलना चाहेंगे जब आप केवल उस चर के मूल्य को देखने की कोशिश कर रहे हों।


यदि आप असाइन करते हैं exit, तो आप इस प्रतीक को ओवरराइड करते हैं, और exit()अब काम नहीं करेगा। हालांकि यह प्रतीक एक वैध चर नाम है, लेकिन इस तरह से इसका उपयोग करना एक बहुत अच्छा अभ्यास नहीं लगता है।
प्रेज़ेमेक डी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.