Quiero que mi script espere hasta que el usuario presione cualquier tecla.
¿Cómo puedo hacer eso?
python
wait
keyboard-input
Janusz
fuente
fuente
input
no continúa si se presiona alguna tecla, solo si se presiona enter.Una forma de hacer esto en Python 2 es usar
raw_input()
:En python3 es solo
input()
fuente
enter
?input()
.from six.moves import input; input("Press Enter to continue...")
En mi caja de Linux, uso el siguiente código. Esto es similar al código que he visto en otros lugares (por ejemplo, en las preguntas frecuentes anteriores de Python), pero ese código gira en un bucle cerrado donde este código no lo hace y hay muchos casos de esquinas extrañas que el código no tiene en cuenta. El código lo hace.
fuente
Si está de acuerdo con los comandos del sistema, puede usar lo siguiente:
Linux:
Ventanas:
fuente
system
y luego llamarsys.exit(0)
.Simplemente usando
causará un SyntaxError: EOF esperado durante el análisis.
Uso de arreglo simple:
fuente
input
en python 2: la función correcta esraw_input
. En python 2,input
es equivalente aeval(raw_input())
.El manual de Python proporciona lo siguiente:
que se puede incluir en su caso de uso.
fuente
Plataforma cruzada, código Python 2/3:
Eliminé el material fctl / sin bloqueo porque estaba dando
IOError
sy no lo necesitaba. Estoy usando este código específicamente porque quiero que se bloquee. ;)Apéndice:
Implementé esto en un paquete en PyPI con muchas otras cosas llamadas consola :
fuente
No conozco una forma independiente de plataforma de hacerlo, pero en Windows, si usa el módulo msvcrt, puede usar su función getch:
mscvcrt también incluye la función kbhit () sin bloqueo para ver si se presionó una tecla sin esperar (no estoy seguro si hay una función de maldición correspondiente). Bajo UNIX, está el paquete curses, pero no estoy seguro si puede usarlo sin usarlo para toda la salida de la pantalla. Este código funciona bajo UNIX:
Tenga en cuenta que curses.getch () devuelve el ordinal de la tecla presionada para que tenga la misma salida que tuve que lanzar.
fuente
Si desea esperar para ingresar (para que el usuario golpee el teclado no provoque que suceda algo inesperado) use
fuente
Soy nuevo en Python y ya estaba pensando que soy demasiado estúpido para reproducir las sugerencias más simples hechas aquí. Resulta que hay una trampa que uno debería saber:
Cuando se ejecuta un script python desde IDLE, algunos comandos IO parecen comportarse de manera completamente diferente (ya que en realidad no hay una ventana de terminal).
P.ej. msvcrt.getch no bloquea y siempre devuelve $ ff. Esto ya se informó hace mucho tiempo (ver, por ejemplo, https://bugs.python.org/issue9290 ), y está marcado como solucionado, de alguna manera el problema parece persistir en las versiones actuales de python / IDLE.
Entonces, si alguno de los códigos publicados anteriormente no funciona para usted, intente ejecutar el script manualmente y NO desde IDLE .
fuente
Si desea ver si presionaron una tecla exacta (como decir 'b') Haga esto:
fuente
os.system parece invocar siempre sh, que no reconoce las opciones syn para leer. Sin embargo, el comando de lectura se puede pasar a bash:
fuente