¿Trabaja en un depurador y usa puntos de interrupción?
gddc
Respuestas:
219
Me parece bien (o raw_input()en Python 2.X). Alternativamente, podría usarlo time.sleep()si desea hacer una pausa durante un cierto número de segundos.
Sé acerca de la función de suspensión en el módulo de tiempo, pero ¿qué sucede si tengo un bloque de texto largo que quiero que lea el usuario?
RandomPhobia
77
Simplemente use printpara mostrar el bloque de texto largo y luego input()o raw_input('Press <ENTER> to continue')según corresponda para su versión de Python.
mhawke
8
Para un bloque de texto largo, es mejor usar input()(o raw_input()en Python 2.x) para solicitar al usuario, en lugar de un retraso de tiempo. Los lectores rápidos no querrán esperar un retraso, los lectores lentos pueden querer más tiempo en el retraso, alguien puede ser interrumpido mientras lo lee y desea mucho más tiempo, etc. Además, si alguien usa mucho el programa, él / ella ella puede acostumbrarse a cómo funciona y no necesitar siquiera leer el texto extenso. Es más amigable dejar que el usuario controle cuánto tiempo se muestra el bloque de texto para leer.
Entonces, encontré que esto funciona muy bien en mis esfuerzos de codificación. Simplemente creé una función al comienzo de mi programa,
def pause():
programPause = raw_input("Press the <ENTER> key to continue...")
y ahora puedo usar la pause()función siempre que lo necesito, como si estuviera escribiendo un archivo por lotes. Por ejemplo , en un programa como este:
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()
Ahora, obviamente, este programa no tiene ningún objetivo y es solo para fines de ejemplo, pero puedes entender exactamente lo que quiero decir.
NOTA: Para Python 3, deberá usar inputen lugar deraw_input
He tenido una pregunta similar y estaba usando la señal:
import signal
def signal_handler(signal_number, frame):print"Proceed ..."
signal.signal(signal.SIGINT, signal_handler)
signal.pause()
Entonces registra un controlador para la señal SIGINT y hace una pausa esperando cualquier señal. Ahora desde fuera de su programa (por ejemplo, en bash), puede ejecutar kill -2 <python_pid>, lo que enviará la señal 2 (es decir, SIGINT) a su programa de Python. Su programa llamará a su controlador registrado y continuará ejecutándose.
Como señalaron los comentarios de mhawke y steveha , la mejor respuesta a esta pregunta exacta sería:
Para un bloque de texto largo, es mejor usar input('Press <ENTER> to continue')(o raw_input('Press <ENTER> to continue')en Python 2.x) para solicitar al usuario, en lugar de un retraso de tiempo. Los lectores rápidos no querrán esperar un retraso, los lectores lentos pueden querer más tiempo en el retraso, alguien puede ser interrumpido mientras lo lee y desea mucho más tiempo, etc. Además, si alguien usa mucho el programa, él / ella ella puede acostumbrarse a cómo funciona y no necesitar siquiera leer el texto extenso. Es más amigable dejar que el usuario controle cuánto tiempo se muestra el bloque de texto para leer.
He usado este método un poco, sin embargo, también me gusta usarlo como una función pause () y no creo que sea necesario salir (). def pause (): return raw_input ("Presione Enter para continuar ...")
Creo que la mejor manera de detener la ejecución es la función time.sleep (). si necesita suspender la ejecución solo en ciertos casos, simplemente puede implementar una declaración if como esta:
import getpass
getpass.getpass("Press Enter to Continue")
Oculta lo que escriba el usuario, lo que ayuda a aclarar que la entrada no se usa aquí.
Pero tenga en cuenta que en la plataforma OSX muestra una clave que puede ser confusa.
Probablemente la mejor solución sería hacer algo similar al módulo getpass usted mismo, sin hacer una read -sllamada. ¿Quizás hacer que el color fg coincida con el bg?
Respuestas:
Me parece bien (o
raw_input()
en Python 2.X). Alternativamente, podría usarlotime.sleep()
si desea hacer una pausa durante un cierto número de segundos.fuente
print
para mostrar el bloque de texto largo y luegoinput()
oraw_input('Press <ENTER> to continue')
según corresponda para su versión de Python.input()
(oraw_input()
en Python 2.x) para solicitar al usuario, en lugar de un retraso de tiempo. Los lectores rápidos no querrán esperar un retraso, los lectores lentos pueden querer más tiempo en el retraso, alguien puede ser interrumpido mientras lo lee y desea mucho más tiempo, etc. Además, si alguien usa mucho el programa, él / ella ella puede acostumbrarse a cómo funciona y no necesitar siquiera leer el texto extenso. Es más amigable dejar que el usuario controle cuánto tiempo se muestra el bloque de texto para leer.Para ventanas solo use:
fuente
Supongo que quieres pausar sin entrada
Utilizar
time.sleep (segundos)
fuente
Entonces, encontré que esto funciona muy bien en mis esfuerzos de codificación. Simplemente creé una función al comienzo de mi programa,
y ahora puedo usar la
pause()
función siempre que lo necesito, como si estuviera escribiendo un archivo por lotes. Por ejemplo , en un programa como este:Ahora, obviamente, este programa no tiene ningún objetivo y es solo para fines de ejemplo, pero puedes entender exactamente lo que quiero decir.
NOTA: Para Python 3, deberá usar
input
en lugar deraw_input
fuente
He tenido una pregunta similar y estaba usando la señal:
Entonces registra un controlador para la señal SIGINT y hace una pausa esperando cualquier señal. Ahora desde fuera de su programa (por ejemplo, en bash), puede ejecutar
kill -2 <python_pid>
, lo que enviará la señal 2 (es decir, SIGINT) a su programa de Python. Su programa llamará a su controlador registrado y continuará ejecutándose.fuente
signal.pause
.Uso lo siguiente para
python
2 y 3 para pausar la ejecución del código hasta que el usuario presionaENTERfuente
Como señalaron los comentarios de mhawke y steveha , la mejor respuesta a esta pregunta exacta sería:
fuente
Muy simple:
fuente
NameError: name 'raw_input' is not defined
fuente
Creo que la mejor manera de detener la ejecución es la función time.sleep (). si necesita suspender la ejecución solo en ciertos casos, simplemente puede implementar una declaración if como esta:
puedes dejar la rama else vacía.
fuente
Creo que me gusta esta solución.
Oculta lo que escriba el usuario, lo que ayuda a aclarar que la entrada no se usa aquí.
Pero tenga en cuenta que en la plataforma OSX muestra una clave que puede ser confusa.
Probablemente la mejor solución sería hacer algo similar al módulo getpass usted mismo, sin hacer una
read -s
llamada. ¿Quizás hacer que el color fg coincida con el bg?fuente
Con este método, puede reanudar su programa simplemente presionando cualquier tecla especificada que haya especificado que:
mismo método pero de otra manera:
Nota: puede instalar el
keyboard
módulo simplemente escribiendo esto en su shell o cmd:fuente
fuente
Para compatibilidad cruzada con Python 2/3, puede usar a
input
través de lasix
bibliotecafuente