Ho usato la input
funzione come un modo per mettere in pausa i miei script
print("something")
wait = input("PRESS ENTER TO CONTINUE.")
print("something")
c'è un modo formale per farlo?
Ho usato la input
funzione come un modo per mettere in pausa i miei script
print("something")
wait = input("PRESS ENTER TO CONTINUE.")
print("something")
c'è un modo formale per farlo?
Risposte:
Mi sembra perfetto (o raw_input()
in Python 2.X). In alternativa, è possibile utilizzare time.sleep()
se si desidera mettere in pausa per un certo numero di secondi.
import time
print("something")
time.sleep(5.5) # pause 5.5 seconds
print("something")
print
per visualizzare il lungo blocco di testo e quindi input()
o raw_input('Press <ENTER> to continue')
come appropriato per la versione di Python.
input()
(o raw_input()
su Python 2.x) per richiedere all'utente, piuttosto che un ritardo. I lettori veloci non vorranno aspettare un ritardo, i lettori lenti potrebbero volere più tempo sul ritardo, qualcuno potrebbe essere interrotto durante la lettura e volere molto più tempo, ecc. Inoltre, se qualcuno usa molto il programma, lui / può abituarsi a come funziona e non è nemmeno necessario leggere il lungo testo. È più semplice lasciare che l'utente controlli per quanto tempo il blocco di testo viene visualizzato per la lettura.
Solo per Windows utilizzare:
import os
os.system("pause")
Quindi, ho trovato che questo funziona molto bene nei miei sforzi di programmazione. Ho semplicemente creato una funzione all'inizio del mio programma,
def pause():
programPause = raw_input("Press the <ENTER> key to continue...")
e ora posso usare la pause()
funzione ogni volta che ho bisogno proprio come se stessi scrivendo un file batch. Ad esempio , in un programma come questo:
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()
Ora ovviamente questo programma non ha obiettivi ed è solo a scopo di esempio, ma puoi capire esattamente cosa intendo.
NOTA: per Python 3, dovrai usare input
al contrarioraw_input
Ho avuto una domanda simile e stavo usando il segnale:
import signal
def signal_handler(signal_number, frame):
print "Proceed ..."
signal.signal(signal.SIGINT, signal_handler)
signal.pause()
Quindi si registra un gestore per il segnale SIGINT e si mette in pausa in attesa di qualsiasi segnale. Ora dall'esterno del tuo programma (ad esempio in bash), puoi eseguire kill -2 <python_pid>
, che invierà il segnale 2 (cioè SIGINT) al tuo programma Python. Il programma chiamerà il gestore registrato e proseguirà l'esecuzione.
signal.pause
.
Uso quanto segue per python
2 e 3 per mettere in pausa l'esecuzione del codice fino a quando l'utente premeENTER
import six
if six.PY2:
raw_input("Press the <ENTER> key to continue...")
else:
input("Press the <ENTER> key to continue...")
Come sottolineato dai commenti di mhawke e steveha , la migliore risposta a questa domanda esatta sarebbe:
Per un lungo blocco di testo, è meglio usare
input('Press <ENTER> to continue')
(oraw_input('Press <ENTER> to continue')
su Python 2.x) per richiedere all'utente, piuttosto che un ritardo. I lettori veloci non vorranno aspettare un ritardo, i lettori lenti potrebbero volere più tempo sul ritardo, qualcuno potrebbe essere interrotto durante la lettura e volere molto più tempo, ecc. Inoltre, se qualcuno usa molto il programma, lui / può abituarsi a come funziona e non è nemmeno necessario leggere il lungo testo. È più semplice lasciare che l'utente controlli per quanto tempo il blocco di testo viene visualizzato per la lettura.
Molto semplice:
raw_input("Press Enter to continue ...")
exit()
NameError: name 'raw_input' is not defined
Print ("This is how you pause")
input()
Penso che mi piace questo soln.
import getpass
getpass.getpass("Press Enter to Continue")
Nasconde qualunque cosa l'utente digiti, il che aiuta a chiarire che l'input non viene utilizzato qui.
Ma attenzione nella piattaforma OSX, mostra una chiave che può essere fonte di confusione.
Probabilmente la soluzione migliore sarebbe quella di fare qualcosa di simile al modulo getpass da soli, senza effettuare una read -s
chiamata. Forse far corrispondere il colore fg al bg?
Con questo metodo, puoi riprendere il tuo programma semplicemente premendo qualsiasi tasto specificato che hai specificato che:
import keyboard
while True:
key = keyboard.read_key()
if key == 'space': # you can put any key you like instead of 'space'
break
stesso metodo ma in un altro modo:
import keyboard
while True:
if keyboard.is_pressed('space'): # same, you can put any key you like instead of 'space'
break
Nota: puoi installare il keyboard
modulo semplicemente scrivendolo nella tua shell o cmd:
pip install keyboard
import os, sys
if sys.platform == 'win32':
os.system('pause')
else:
input('Press any key to continue...')