Правильный способ приостановить программу Python
Я использую функцию ввода как способ приостановить мои скрипты
print("something")
wait = input("PRESS ENTER TO CONTINUE.")
print("something")
есть ли формальный способ сделать это?
10 ответов
кажется мне прекрасным (или raw_input()
в Python 2.Икс.) В качестве альтернативы вы можете использовать time.sleep()
Если вы хотите сделать паузу на определенное количество секунд.
import time
print("something")
time.sleep(5.5) # pause 5.5 seconds
print("something")
Итак, я обнаружил, что это очень хорошо работает в моих начинаниях кодирования. Я просто создана функция в самом начале моей программы,
def pause():
programPause = raw_input("Press the <ENTER> key to continue...")
и теперь я могу использовать pause()
функция всякий раз, когда мне нужно так же, как если бы я писал пакетный файл. , в такой программе, как эта:
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()
теперь очевидно, что эта программа не имеет цели и просто для примера целей, но вы можете понять, что именно я означать.
примечание: для Python 3 вам нужно будет использовать input
В противоположность raw_input
Я использую следующее Для python
2 и 3, чтобы приостановить выполнение кода, пока пользователь не нажмет ENTER
import six
if six.PY2:
raw_input("Press the <ENTER> key to continue...")
else:
input("Press the <ENTER> key to continue...")
у меня был аналогичный вопрос, и я использовал сигнал:
import signal
def signal_handler(signal_number, frame):
print "Proceed ..."
signal.signal(signal.SIGINT, signal_handler)
signal.pause()
таким образом, Вы регистрируете обработчик сигнала SIGINT и приостанавливаете ожидание любого сигнала. Теперь вне вашей программы (например, в bash) вы можете запустить kill -2 <python_pid>
, который отправит сигнал 2 (т. е. SIGINT) в вашу программу python. Ваша программа вызовет зарегистрированный обработчик и продолжит работу.
Как указал mhawke и stevehaкомментарии, лучший ответ на этот точный вопрос будет:
для длинного блока текста лучше всего использовать
input('Press <ENTER> to continue')
(илиraw_input('Press <ENTER> to continue')
на Python 2.x) запрашивать пользователя, а не время задержки. Быстрые читатели не хочу ждать задержки, медленные читатели могут захотеть больше времени задержка, кто-то может быть прерван во время чтения и хочет намного больше времени и т. д. Кроме того, если кто-то использует программу много, он/она возможно, привыкли, как это работает и не нужно даже читать долго текст. Это просто дружелюбнее, чтобы позволить пользователю контролировать, как долго блок текст отображается для чтения.
Я думаю, что лучший способ остановить казнь это время.сна (функция). если вам нужно приостановить выполнение только в определенных случаях, вы можете просто реализовать оператор if следующим образом:
if somethinghappen:
time.sleep(seconds)
вы можете оставить ветку else пустой.