Я использовал функцию ввода как способ приостановить мои скрипты
print("something")
wait = input("PRESS ENTER TO CONTINUE.")
print("something")
есть ли формальный способ сделать это?
Я использовал функцию ввода как способ приостановить мои скрипты
print("something")
wait = input("PRESS ENTER TO CONTINUE.")
print("something")
есть ли формальный способ сделать это?
Кажется, мне хорошо (или raw_input()
в Python 2.X). В качестве альтернативы вы можете использовать time.sleep()
, если вы хотите сделать паузу в течение определенного количества секунд.
import time
print("something")
time.sleep(5.5) # pause 5.5 seconds
print("something")
Для окон используйте только:
import os
os.system("pause")
Я предполагаю, что вы хотите приостановить без ввода
Использование
Итак, я нашел, что это очень хорошо работает в моих программах кодирования. Я просто создал функцию в самом начале моей программы,
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
У меня был аналогичный вопрос, и я использовал сигнал:
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. Ваша программа вызовет ваш зарегистрированный обработчик и продолжит работу.
Я использую следующее для 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...")
Очень просто:
raw_input("Press Enter to continue ...")
exit()
Print ("This is how you pause")
input()
Как указано mhawke и steveha, лучший ответ на этот точный вопрос будет:
Для длинного блока текста лучше использовать
input('Press <ENTER> to continue')
(илиraw_input('Press <ENTER> to continue')
on Python 2.x), чтобы запрашивать пользователя, а не задержку времени. Быстрый читатель не захотят ждать задержки, медленным читателям может потребоваться больше времени на задержка, кто-то может быть прерван во время чтения и много больше времени и т.д. Кроме того, если кто-то много использует программу, он/она может привыкнуть к тому, как это работает, и не нужно даже читать длинные текст. Это просто более удобно, чтобы позволить пользователю контролировать, как долго блок текста отображается для чтения.
Я думаю, что лучший способ остановить выполнение - это функция time.sleep(). если вам нужно приостановить выполнение только в определенных случаях, вы можете просто реализовать оператор if, например:
if somethinghappen:
time.sleep(seconds)
вы можете оставить пустую ветку else.
Я думаю, что мне нравится этот soln.
import getpass
getpass.getpass("Press Enter to Continue")
Он скрывает все, что вводит пользователь, что помогает уточнить, что ввод здесь не используется.
Но будьте внимательны на платформе OSX, она отображает ключ, который может сбить с толку.
Вероятно, лучшим решением было бы сделать что-то похожее на модуль getpass без вызова read -s
. Может быть, чтобы цвет fg соответствовал bg?
Для кросс-совместимости с Python 2/3 вы можете использовать input
через six
библиотек:
import six
six.moves.input( 'Press the <ENTER> key to continue...' )