Forma correcta de pausar un programa de Python

5 minutos de lectura

avatar de usuario
RandomFobia

he estado usando el input funcionan como una forma de pausar mis scripts:

print("something")
wait = input("Press Enter to continue.")
print("something")

¿Hay una manera formal de hacer esto?

  • ¿Trabaja en un depurador y usa puntos de interrupción?

    – gddc

    19 de julio de 2012 a las 0:29

avatar de usuario
mhawke

Eso parece bien para mí (o raw_input() en Python 2.X). Alternativamente, podrías usar time.sleep() si desea hacer una pausa durante un cierto número de segundos.

import time
print("something")
time.sleep(5.5)    # Pause 5.5 seconds
print("something")

  • Conozco la función de suspensión en el módulo de tiempo, pero ¿qué pasa si tengo un bloque largo de texto que quiero que el usuario lea?

    – RandomFobia

    19 de julio de 2012 a las 0:34

  • Simplemente use print para mostrar el bloque largo de texto y luego input() o raw_input('Press <ENTER> to continue') según corresponda para su versión de Python.

    – mhawke

    19 de julio de 2012 a las 0:39


  • Para un bloque largo de texto, es mejor usar input() (o raw_input() en Python 2.x) para avisar 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 lee y quiere mucho más tiempo, etc. Además, si alguien usa mucho el programa, él/ella ella puede acostumbrarse a cómo funciona y ni siquiera necesita leer el texto largo. Es más amigable dejar que el usuario controle cuánto tiempo se muestra el bloque de texto para leer.

    – steveha

    19 de julio de 2012 a las 2:00

avatar de usuario
Chan Tzish

Solo para Windowsusar:

import os
os.system("pause")

  • Esto es específico de Windows, mientras que todas las respuestas existentes son independientes de la plataforma.

    – lvc

    2 oct 2015 a las 14:26

  • ¿Por qué Python implementaría una función que es específica del sistema operativo? No tiene sentido.

    – Denis

    26 de octubre de 2020 a las 14:22

  • os.system() llama a una función del sistema llamada “pausa”: un ubuntu, por ejemplo, no sabe qué es “pausa”, por lo que regresará con: sh: 1: pausa: no encontrado

    – ato

    10 de noviembre de 2020 a las 11:16


  • Sé que esto probablemente no sea lo que quería la pregunta, pero me ayudó mucho.

    – Transmitir Verano

    23 de febrero de 2021 a las 3:05

  • Si está llamando a la secuencia de comandos de python desde un archivo por lotes de Windows, puede agregar pause al final del archivo por lotes en lugar de poner un comando al final del archivo python, y obtendrá el mismo efecto. De esta manera, el archivo python es independiente del sistema operativo, mientras que el archivo por lotes solo podría usarse en Windows de todos modos.

    –Leland Hepworth

    23 de febrero de 2021 a las 22:54

Entonces, encontré que esto funciona muy bien en mis esfuerzos de codificación. Yo simplemente creó una función al principio de mi programa,

def pause():
    programPause = raw_input("Press the <ENTER> key to continue...")

y ahora puedo usar el pause() funcione siempre que lo necesite, como si estuviera escribiendo un archivo por lotes. Por ejemploen 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 input Opuesto a raw_input

  • ¿En qué se diferencia esto de lo que se indica en la pregunta?

    -Peter Mortensen

    8 de noviembre de 2020 a las 4:26

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>, 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.

  • Sí, los motores de búsqueda llevan a esta pregunta.

    -Peter Mortensen

    10 abr a las 16:40

  • Esto requiere import time.

    -Peter Mortensen

    10 abr a las 16:43

avatar de usuario
Adewole Adesola

Uso lo siguiente para Python 2 y Python 3 para pausar la ejecución del código hasta que el usuario presione Ingresar

import six

if six.PY2:
    raw_input("Press the <Enter> key to continue...")
else:
    input("Press the <Enter> key to continue...")

avatar de usuario
wilson

print ("This is how you pause")

input()

Como lo señalaron los comentarios de mhawke y steveha, la mejor respuesta a esta pregunta exacta sería:

Pitón 3.x:

input('Press <ENTER> to continue')

Pitón 2.x:

raw_input('Press <ENTER> to continue')

Para un bloque largo de texto, es mejor usar input('Press <ENTER> to continue') (o raw_input('Press <ENTER> to continue') en Python 2.x) para avisar 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 lee y quiere mucho más tiempo, etc. Además, si alguien usa mucho el programa, él/ella ella puede acostumbrarse a cómo funciona y ni siquiera necesita leer el texto largo. Es más amigable dejar que el usuario controle cuánto tiempo se muestra el bloque de texto para leer.

Anécdota: Hubo un tiempo en que los programas usaban “pulsa [ANY] tecla para continuar”. Esto falló porque las personas se quejaban de que no podían encontrar la tecla NINGUNA en su teclado 🙂

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad