2012-08-09 117 views
12

Por lo tanto, como dice el título, quiero un código adecuado para cerrar mi script python. Hasta ahora, he usado input('Press Any Key To Exit'), pero lo que eso hace es generar un error. Me gustaría un código que simplemente cierra su script sin usar un error.Python, presione cualquier tecla para salir

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

Traceback (most recent call last): 
    File "C:/Python27/test", line 1, in <module> 
    input('Press Any Key To Exit') 
    File "<string>", line 0 

^
SyntaxError: unexpected EOF while parsing 
+1

'entrada = ('Presione cualquier tecla para salir')' '¿Quiere decir de entrada ('Presione cualquier tecla para salir')'? El primero no hará nada. Además, intente usar raw_input(). – Josiah

+0

el primero no hará nada, pero no debería arrojar ningún error ... simplemente volverá a enlazar el nombre de entrada a esa cadena – wim

+0

@wim De acuerdo, es por eso que asumo que escribió la pregunta incorrectamente y sugirió intentar 'raw_input()'. – Josiah

Respuesta

9

¿Ha intentado raw_input()? Podría ser que esté obteniendo un error de sintaxis al usar input() en python 2.x, que intentará con eval sea lo que sea que obtenga.

+0

Sí, esto lo arregló, pero vi que alguien respondió que esto no está disponible en 3.0, así que si actualizo, ¿estoy atascado nuevamente? –

+0

@JoppeDnbCuyper: 'raw_input' se renombra como' input' en Python 3.0, por lo que si actualiza, simplemente tiene que cambiar cada instancia de 'raw_input' a' input' –

+1

la entrada es muy peligrosa en <3. –

-1

Por lo que sé, no hay forma 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)

+0

Vea las respuestas de LISTERINE y mis respuestas. –

13

Si está en Windows, entonces el comando cmd pause debería funcionar, aunque se lee 'pulse cualquier tecla para continuar'

import os 
os.system('pause') 

La alternativa Linux es read, una buena descripción puede encontrarse here

4

me desanimaría a funciones específicas de la plataforma en Python si se puede evitar, pero se puede usar la incorporada en el módulo de msvcrt.

from msvcrt import getch 

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

Aquí está una manera de poner fin al pulsar cualquier tecla en * nix, sin mostrar la llave y sin pulsar retorno. (El crédito para el método general va al Python read a single character from the user). Al hurgar en SO, parece que podría usar el módulo msvcrt para duplicar esta funcionalidad en Windows, pero no la tengo instalada en ningún lado para probarla. El exceso de comentarios 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!' 
0

Ok estoy en Linux Mint 17.1 "Rebecca" y parece que he descubierto, Como sabrán Linux Mint viene con Python instalado, no se puede actualizarlo ni puede instalar otra versión encima de él. Descubrí que el python que viene preinstalado en Linux Mint es la versión 2.7.6, por lo que 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 indicará que el programa salió con el código 0. Por ejemplo, este es mi primer programa. MyFirstProgram. Tenga en cuenta que es mi primer programa y sé que apesta, pero es un buen ejemplo de cómo usar "Presione cualquier tecla para salir" BTW Esta también es mi primera publicación en este sitio web, lo siento mucho si la formateé mal.

+1

¡Bienvenido a StackOverflow! Debería publicar fragmentos cortos como este como parte de su respuesta. El editor proporciona el bloque de código y las herramientas de código en línea para que lo respalden. Esto hará que tu anwer sea más fácil de leer para otros. Obtenga más información sobre cómo escribir una buena respuesta en [help center] (http://stackoverflow.com/help/how-to-answer). –

1

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 más general, multiplataforma getch() inspirada en this answer.

instalar con pip install py-getch, y utilizar de esta manera:

pause() 

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

pause('Press Any Key To Exit.') 

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

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

Check it out.

0

en Windows:

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

Agregue algunas explicaciones también. – BlackBeard

Cuestiones relacionadas