Python, presiona cualquier tecla para salir

Entonces, como dice el título, quiero un código adecuado para cerrar mi script de python. Hasta ahora, he usado la input('Press Any Key To Exit') , pero lo que hace es generar un error. Me gustaría un código que solo cierre su script sin usar un error.

¿Alguien tiene una idea? Google me da la opción de entrada, pero no quiero que se cierre con este error:

 Traceback (most recent call last): File "C:/Python27/test", line 1, in  input('Press Any Key To Exit') File "", line 0 ^ SyntaxError: unexpected EOF while parsing 

¿Has probado raw_input() ? Podría ser que esté obteniendo un error de syntax al utilizar input() en python 2.x, que intentará eval lo que sea que se obtenga.

Si está en Windows, entonces el comando cmd pause debería funcionar, aunque dice ‘presione cualquier tecla para continuar’

 import os os.system('pause') 

Se read alternativa de linux, aquí se puede encontrar una buena descripción.

Desalentaría las funciones específicas de la plataforma en Python si pudiera evitarlas, pero podría usar el módulo msvcrt .

 from msvcrt import getch junk = getch() # Assign to a variable just to suppress output. Blocks until key press. 

Un poco tarde para el juego, pero escribí una biblioteca hace un par de años para hacer exactamente esto. Expone una función pause() con un mensaje personalizable y la función getch() multiplataforma más general inspirada en esta respuesta .

Instala con pip install py-getch , y pip install py-getch así:

 from getch import pause pause() 

Esto imprime 'Press any key to continue . . .' 'Press any key to continue . . .' por defecto. Proporcionar un mensaje personalizado con:

 pause('Press Any Key To Exit.') 

Para su comodidad, también viene con una variante que llama sys.exit(status) en un solo paso:

 pause_exit(0, 'Press Any Key To Exit.') 

Échale un vistazo

Aquí hay una manera de finalizar presionando cualquier tecla en * nix, sin mostrar la tecla y sin presionar regresar . (El crédito para el método general va a que Python lea un solo carácter del usuario ). Parece que podría usar el módulo msvcrt para duplicar esta funcionalidad en Windows, pero no lo tengo instalado en ninguna parte para probar . Sobre comentado para explicar lo que está pasando …

 import sys, termios, tty stdinFileDesc = sys.stdin.fileno() #store stdin's file descriptor oldStdinTtyAttr = termios.tcgetattr(stdinFileDesc) #save stdin's tty attributes so I can reset it later try: print 'Press any key to exit...' tty.setraw(stdinFileDesc) #set the input mode of stdin so that it gets added to char by char rather than line by line sys.stdin.read(1) #read 1 byte from stdin (indicating that a key has been pressed) finally: termios.tcsetattr(stdinFileDesc, termios.TCSADRAIN, oldStdinTtyAttr) #reset stdin to its normal behavior print 'Goodbye!' 

Ok, estoy en Linux Mint 17.1 “Rebecca” y parece que lo he descubierto. Como sabrás, Linux Mint viene con Python instalado, no puedes actualizarlo ni puedes instalar otra versión encima. Descubrí que el python que viene preinstalado en Linux Mint es la versión 2.7.6, por lo que lo siguiente seguramente funcionará en la versión 2.7.6. Si agrega raw_input('Press any key to exit') no mostrará ningún código de error, pero le dirá que el progtwig salió con el código 0. Por ejemplo, este es mi primer progtwig. MyFirstProgram . Tenga en cuenta que es mi primer progtwig y sé que apesta, pero es un buen ejemplo de cómo usar “Presionar cualquier tecla para salir”. Por cierto, esta es mi primera publicación en este sitio web, lo siento mucho si lo formateé mal.

en Windows:

 if msvcrt.kbhit(): if msvcrt.getch() == b'q': exit() 

Que yo sepa, no hay manera de ‘presionar ninguna tecla’. Los comandos input y raw_input requieren que presione la tecla ENTER. (raw_input no es compatible con Python 3.x)