Używałem tej input
funkcji jako sposobu na wstrzymanie moich skryptów
print("something")
wait = input("PRESS ENTER TO CONTINUE.")
print("something")
czy istnieje formalny sposób, aby to zrobić?
Używałem tej input
funkcji jako sposobu na wstrzymanie moich skryptów
print("something")
wait = input("PRESS ENTER TO CONTINUE.")
print("something")
czy istnieje formalny sposób, aby to zrobić?
Odpowiedzi:
Wydaje mi się w porządku (lub raw_input()
w Pythonie 2.X). Alternatywnie możesz użyć, time.sleep()
jeśli chcesz wstrzymać na określoną liczbę sekund.
import time
print("something")
time.sleep(5.5) # pause 5.5 seconds
print("something")
print
aby wyświetlić długi blok tekstu, a następnie input()
lub raw_input('Press <ENTER> to continue')
odpowiednio dla twojej wersji Pythona.
input()
(lub raw_input()
w Pythonie 2.x) do monitowania użytkownika, a nie opóźnienia czasowego. Szybcy czytelnicy nie będą chcieli czekać na opóźnienie, powolni czytelnicy mogą chcieć więcej czasu na opóźnienie, ktoś może zostać przerwany w czytaniu i będzie potrzebował dużo więcej czasu itp. Ponadto, jeśli ktoś często używa programu, on / może przyzwyczaić się do tego, jak to działa i nie będzie musiała nawet czytać długiego tekstu. Po prostu łatwiej jest pozwolić użytkownikowi kontrolować, jak długo blok tekstu jest wyświetlany do czytania.
Tylko w systemie Windows użyj:
import os
os.system("pause")
Tak więc okazało się, że działa to bardzo dobrze w moich próbach kodowania. Po prostu utworzyłem funkcję na samym początku programu,
def pause():
programPause = raw_input("Press the <ENTER> key to continue...")
a teraz mogę korzystać z tej pause()
funkcji zawsze, gdy potrzebuję, tak jakbym pisał 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()
Oczywiście ten program nie ma celu i służy tylko jako przykład do celów, ale możesz dokładnie zrozumieć, o co mi chodzi.
UWAGA: W przypadku Pythona 3 będziesz musiał użyć, input
a nieraw_input
Miałem podobne pytanie i korzystałem z sygnału:
import signal
def signal_handler(signal_number, frame):
print "Proceed ..."
signal.signal(signal.SIGINT, signal_handler)
signal.pause()
Więc rejestrujesz program obsługi dla sygnału SIGINT i czekasz na dowolny sygnał. Teraz spoza twojego programu (np. W bash) możesz uruchomić kill -2 <python_pid>
, który wyśle sygnał 2 (tj. SIGINT) do twojego programu w Pythonie. Twój program zadzwoni do zarejestrowanego programu obsługi i zacznie działać.
signal.pause
.
Używam następujących dla python
2 i 3, aby wstrzymać wykonywanie kodu do momentu naciśnięcia przez użytkownikaENTER
import six
if six.PY2:
raw_input("Press the <ENTER> key to continue...")
else:
input("Press the <ENTER> key to continue...")
Jak podkreślają komentarze mhawke i steveha , najlepszą odpowiedzią na to dokładne pytanie byłoby:
W przypadku długich bloków tekstu najlepiej jest używać
input('Press <ENTER> to continue')
(lubraw_input('Press <ENTER> to continue')
w Pythonie 2.x) do monitowania użytkownika, a nie opóźnienia czasowego. Szybcy czytelnicy nie będą chcieli czekać na opóźnienie, powolni czytelnicy mogą chcieć więcej czasu na opóźnienie, ktoś może zostać przerwany w czytaniu i będzie potrzebował dużo więcej czasu itp. Ponadto, jeśli ktoś często używa programu, on / może przyzwyczaić się do tego, jak to działa i nie będzie musiała nawet czytać długiego tekstu. Po prostu łatwiej jest pozwolić użytkownikowi kontrolować, jak długo blok tekstu jest wyświetlany do czytania.
Bardzo prosty:
raw_input("Press Enter to continue ...")
exit()
NameError: name 'raw_input' is not defined
Print ("This is how you pause")
input()
Myślę, że najlepszym sposobem na zatrzymanie wykonywania jest funkcja time.sleep (). jeśli chcesz zawiesić wykonywanie tylko w określonych przypadkach, możesz po prostu zaimplementować instrukcję if w następujący sposób:
if somethinghappen:
time.sleep(seconds)
możesz zostawić gałąź else pustą.
Myślę, że podoba mi się ten soln.
import getpass
getpass.getpass("Press Enter to Continue")
Ukrywa wszystko, co wpisuje użytkownik, co pomaga wyjaśnić, że dane wejściowe nie są tutaj używane.
Ale pamiętaj, że na platformie OSX wyświetla klucz, który może być mylący.
Prawdopodobnie najlepszym rozwiązaniem byłoby samodzielne zrobienie czegoś podobnego do modułu getpass, bez wykonywania read -s
połączenia. Może dopasowanie koloru fg do bg?
Dzięki tej metodzie możesz wznowić program, naciskając dowolny określony klawisz, który:
import keyboard
while True:
key = keyboard.read_key()
if key == 'space': # you can put any key you like instead of 'space'
break
ta sama metoda, ale w inny sposób:
import keyboard
while True:
if keyboard.is_pressed('space'): # same, you can put any key you like instead of 'space'
break
Uwaga: możesz zainstalować keyboard
moduł po prostu pisząc to w swojej powłoce lub cmd:
pip install keyboard
import os, sys
if sys.platform == 'win32':
os.system('pause')
else:
input('Press any key to continue...')