2012-07-19 14 views
92

Używam funkcję wejścia jako sposób, aby wstrzymać moje skryptypoprawny sposób wstrzymać Pythona programu

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

czy istnieje formalny sposób to zrobić?

+1

Praca w debugger i używać breakpointów? –

+2

Jestem początkującym w tym, ale według http://docs.python.org/2/library/functions.html#input, 'input (prompt)' jest równoważne 'eval (raw_input (prompt))' . To prawdopodobnie nie jest to, czego chcesz. – user100464

+1

@ user100464: Jeśli to Python 3, to jest w porządku; "input" w Py3 jest takie samo jak "raw_input" Py2. Jeśli jest to Py3, to, co mają, jest w porządku, chociaż nie ma potrzeby przypisywania wartości zwracanej, jeśli nigdy nie jest używana. – ShadowRanger

Odpowiedz

139

Wydaje mi się, że jestem w porządku (lub raw_input() w Pythonie 2.X). Ewentualnie możesz użyć time.sleep(), jeśli chcesz zatrzymać się na określoną liczbę sekund.

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

Wiem o funkcji spania w module czasu, ale co, jeśli mam długi blok tekstu, który chcę, aby użytkownik przeczytał? – RandomPhobia

+7

Po prostu użyj 'print', aby wyświetlić długi blok tekstu, a następnie' input() 'lub' raw_input ('Naciśnij , aby kontynuować') 'odpowiednio do twojej wersji Pythona. – mhawke

+6

W przypadku długiego bloku tekstu najlepiej jest użyć 'input()' (lub 'raw_input()' w Pythonie 2.x), aby zapytać użytkownika, a nie opóźnienie czasowe. Szybcy czytelnicy nie będą chcieli czekać na opóźnienie, wolni czytelnicy mogą chcieć więcej czasu na opóźnienie, ktoś może zostać przerwany podczas czytania i potrzebować dużo więcej czasu itp. Również, jeśli ktoś dużo korzysta z programu, on/może się przyzwyczaić do tego, jak to działa i nie musi nawet czytać długiego tekstu. Jest bardziej przyjazny, aby pozwolić użytkownikowi kontrolować czas wyświetlania bloku tekstu. – steveha

4

Jak podkreślił mhawke i steveha „s komentarze, najlepszą odpowiedzią na taką pytaniem byłoby:

W przypadku długiego bloku tekstu najlepiej jest użyć input('Press <ENTER> to continue') (lub raw_input('Press <ENTER> to continue') na Python 2.x), aby wyświetlić monit użytkownika zamiast opóźnienia. Szybkie czytniki nie będą czekać na opóźnienie, wolni czytelnicy mogą chcieć więcej czasu na opóźnienia, ktoś może zostać przerwany podczas czytania i chcieć dużo więcej czasu, itd. Również, jeśli ktoś dużo korzysta z programu , on/ona może się przyzwyczaić do sposobu działania i nie musi nawet czytać długiego tekstu . Bardziej przyjazne dla użytkownika jest to, jak długo tekst wyświetlany jest do odczytu.

19

zastosowanie:

import os 
os.system("pause") 
+12

Jest to specyficzne dla systemu Windows, podczas gdy wszystkie istniejące odpowiedzi są niezależne od platformy. – lvc

4

miałem podobne pytanie i używałem sygnału:

import signal 

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

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

Więc zarejestrowania obsługi dla SIGINT sygnału i pauzy oczekiwania na jakikolwiek sygnał. Teraz spoza twojego programu (np. W bash) możesz uruchomić kill -2 <python_pid>, który wyśle ​​sygnał 2 (to jest SIGINT) do twojego programu Pythona. Twój program zadzwoni do twojej zarejestrowanej obsługi i zacznie działać.

6

Tak więc, znalazłem to bardzo dobrze w moich staraniach o kodowanie. Po prostu stworzył funkcję na samym początku mojego programu,

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

i teraz mogę korzystać z funkcji pause() ilekroć muszę tak jakby pisałem plik wsadowy. Na przykład, w programie takim jak ten:

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() 

Teraz oczywiście program ten nie ma celu i tylko dla celów przykładowych, ale można zrozumieć dokładnie, co mam na myśli.

UWAGA: W Pythonie 3, trzeba będzie użyć input w przeciwieństwie do raw_input

0

myślę, że najlepszym sposobem, aby zatrzymać wykonanie jest funkcja time.sleep(). jeśli trzeba zawiesić wykonanie tylko w niektórych przypadkach można po prostu wdrożyć if tak:

if somethinghappen: 
    time.sleep(seconds) 

można pozostawić pusty gałąź innego.

5

Bardzo prosta:

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

Użyłem tej metody trochę, ale też lubię używać jej jako funkcji pause() i nie sądzę, że istnieje potrzeba wyjścia(). def pause(): return raw_input ("Naciśnij Enter, aby kontynuować ...") – jacktrader

2

używam następujących do python 2 i 3, aby wstrzymać wykonanie kodu, dopóki użytkownik ENTER

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