पाइथन कार्यक्रम को रोकने का सही तरीका


161

मैं inputअपनी स्क्रिप्ट को रोकने के लिए फ़ंक्शन का उपयोग कर रहा हूं

print("something")
wait = input("PRESS ENTER TO CONTINUE.")
print("something")

क्या ऐसा करने का कोई औपचारिक तरीका है?


2
डिबगर में काम करें और ब्रेकप्वाइंट का उपयोग करें?
gddc

जवाबों:


219

मुझे ठीक लगता है (या raw_input()अजगर 2.X में)। time.sleep()यदि आप कुछ सेकंड के लिए रुकना चाहते हैं तो वैकल्पिक रूप से आप इसका उपयोग कर सकते हैं ।

import time
print("something")
time.sleep(5.5)    # pause 5.5 seconds
print("something")

1
मैं समय मॉड्यूल में नींद समारोह के बारे में जानता हूं लेकिन क्या होगा यदि मेरे पास पाठ का एक लंबा खंड है जो मैं चाहता हूं कि उपयोगकर्ता पढ़ें?
रैंडमफोबिया

7
सीधे शब्दों में का उपयोग printपाठ की लंबी ब्लॉक प्रदर्शित करने के लिए और उसके बाद input()या raw_input('Press <ENTER> to continue')अजगर के अपने संस्करण के लिए उपयुक्त के रूप में।
म्हावेके

8
पाठ के एक लंबे ब्लॉक के लिए, उपयोगकर्ता को संकेत देने के लिए input()(या raw_input()पायथन 2.x पर) का उपयोग करना सबसे अच्छा है , बजाय समय की देरी के। तेजी से पाठकों को देरी के लिए इंतजार नहीं करना होगा, धीमे पाठकों को देरी पर अधिक समय चाहिए, किसी को इसे पढ़ते समय बाधित किया जा सकता है और बहुत अधिक समय चाहते हैं, आदि, इसके अलावा, अगर कोई कार्यक्रम का उपयोग करता है, तो वह / वह इस बात के अभ्यस्त हो सकती है कि यह कैसे काम करता है और लंबे पाठ को पढ़ने की आवश्यकता भी नहीं है। उपयोगकर्ता को यह बताने के लिए केवल मित्रवत है कि पाठ के ब्लॉक को पढ़ने के लिए कितनी देर तक प्रदर्शित किया जाए।
स्टीवेहा

30

केवल खिड़कियों के लिए उपयोग करें:

import os
os.system("pause")

23
यह विंडोज विशिष्ट है, जबकि सभी मौजूदा उत्तर प्लेटफॉर्म स्वतंत्र हैं।
LVC


17

इसलिए, मैंने अपने कोडिंग प्रयासों में बहुत अच्छा काम किया। मैंने बस अपने कार्यक्रम की शुरुआत में एक समारोह बनाया ,

def pause():
    programPause = raw_input("Press the <ENTER> key to continue...")

और अब मैं pause()फ़ंक्शन का उपयोग कर सकता हूं जब भी मुझे ज़रूरत होती है जैसे कि मैं एक बैच फ़ाइल लिख रहा था। उदाहरण के लिए , इस तरह एक कार्यक्रम में:

import os
import system

def pause():
    programPause = raw_input("Press the <ENTER> key to continue...")

print("Think about what you ate for dinner last night...")
pause()

अब जाहिर है कि इस कार्यक्रम का कोई उद्देश्य नहीं है और यह केवल उदाहरण के उद्देश्य के लिए है, लेकिन आप ठीक से समझ सकते हैं कि मेरा क्या मतलब है।

नोट: पायथन 3 के लिए, आपको इसके inputविपरीत उपयोग करने की आवश्यकता होगीraw_input


7

मेरे पास एक समान प्रश्न है और मैं संकेत का उपयोग कर रहा था:

import signal

def signal_handler(signal_number, frame):
    print "Proceed ..."

signal.signal(signal.SIGINT, signal_handler)
signal.pause()

तो आप सिग्नल के लिए हैंडलर रजिस्टर करें और किसी सिग्नल की प्रतीक्षा करें। अब आपके प्रोग्राम के बाहर से (उदाहरण के लिए), आप चला सकते हैं kill -2 <python_pid>, जो आपके पायथन प्रोग्राम में सिग्नल 2 (यानी SIGINT) भेजेगा। आपका कार्यक्रम आपके पंजीकृत हैंडलर को बुलाएगा और आगे बढ़ना होगा।


2
ध्यान दें कि यह प्लेटफार्मों भर में पोर्टेबल नहीं है, उदाहरण के लिए। विंडोज पर कोई है signal.pause
सिरिल

7

pythonजब तक उपयोगकर्ता प्रेस नहीं करता तब तक मैं कोड निष्पादन के लिए 2 और 3 का उपयोग करता हूंENTER

import six
if six.PY2:
    raw_input("Press the <ENTER> key to continue...")
else:
    input("Press the <ENTER> key to continue...")

5

जैसा कि महावे और स्टीवेहा की टिप्पणियों से पता चलता है, इस सटीक प्रश्न का सबसे अच्छा उत्तर होगा:

पाठ के एक लंबे ब्लॉक के लिए, उपयोगकर्ता को संकेत देने के लिए input('Press <ENTER> to continue')(या raw_input('Press <ENTER> to continue')पायथन 2.x पर) का उपयोग करना सबसे अच्छा है , बजाय समय की देरी के। तेजी से पाठकों को देरी के लिए इंतजार नहीं करना होगा, धीमे पाठकों को देरी पर अधिक समय चाहिए, किसी को इसे पढ़ते समय बाधित किया जा सकता है और बहुत अधिक समय चाहते हैं, आदि, इसके अलावा, अगर कोई कार्यक्रम का उपयोग करता है, तो वह / वह इस बात के अभ्यस्त हो सकती है कि यह कैसे काम करता है और लंबे पाठ को पढ़ने की आवश्यकता भी नहीं है। उपयोगकर्ता को यह बताने के लिए केवल मित्रवत है कि पाठ के ब्लॉक को पढ़ने के लिए कितनी देर तक प्रदर्शित किया जाए।


5

बहुत आसान:

raw_input("Press Enter to continue ...")
exit()

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

NameError: name 'raw_input' is not defined
BERS


0

मुझे लगता है कि निष्पादन को रोकने का सबसे अच्छा तरीका समय है। स्लीप () फ़ंक्शन। यदि आपको केवल कुछ मामलों में निष्पादन को निलंबित करने की आवश्यकता है, तो आप इस तरह से एक बयान को लागू कर सकते हैं:

if somethinghappen:
    time.sleep(seconds)

आप दूसरी शाखा को खाली छोड़ सकते हैं।


0

मुझे लगता है कि मुझे यह सॉल पसंद है।

import getpass
getpass.getpass("Press Enter to Continue")

यह उपयोगकर्ता के प्रकारों को छुपाता है, जो यह स्पष्ट करने में मदद करता है कि इनपुट का उपयोग यहां नहीं किया गया है।

लेकिन OSX प्लेटफ़ॉर्म में ध्यान रखें कि यह एक कुंजी प्रदर्शित करता है जो भ्रामक हो सकता है।

यह एक कुंजी दिखाता है, जैसे मैंने कहा


संभवत: सबसे अच्छा समाधान यह होगा कि बिना read -sकॉल किए, अपने आप ही गेटपास मॉड्यूल के समान कुछ करें। हो सकता है कि fg का रंग बनाना bg से मेल खाता हो?


0

इस विधि के द्वारा, आप केवल निर्दिष्ट की गई किसी भी कुंजी को दबाकर अपना कार्यक्रम फिर से शुरू कर सकते हैं:

import keyboard
while True:
    key = keyboard.read_key()
    if key == 'space':  # you can put any key you like instead of 'space'
        break

एक ही तरीका है लेकिन दूसरे तरीके से:

import keyboard
while True:
    if keyboard.is_pressed('space'):  # same, you can put any key you like instead of 'space'
        break

नोट: आप इसे keyboardशेल या cmd में लिखकर बस मॉड्यूल स्थापित कर सकते हैं :

pip install keyboard


-1

क्रॉस पायथन 2/3 संगतता के लिए, आप लाइब्रेरी के inputमाध्यम से उपयोग कर सकते हैं six:

import six
six.moves.input( 'Press the <ENTER> key to continue...' )
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.