Правильный способ приостановки программы Python

Я использовал функцию ввода как способ приостановить мои скрипты

print("something")
wait = input("PRESS ENTER TO CONTINUE.")
print("something")

есть ли формальный способ сделать это?

Ответ 1

Кажется, мне хорошо (или raw_input() в Python 2.X). В качестве альтернативы вы можете использовать time.sleep(), если вы хотите сделать паузу в течение определенного количества секунд.

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

Ответ 2

Для окон используйте только:

import os
os.system("pause")

Ответ 3

Я предполагаю, что вы хотите приостановить без ввода

Использование

time.sleep(secs)

Ответ 4

Итак, я нашел, что это очень хорошо работает в моих программах кодирования. Я просто создал функцию в самом начале моей программы,

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

Ответ 5

У меня был аналогичный вопрос, и я использовал сигнал:

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. Ваша программа вызовет ваш зарегистрированный обработчик и продолжит работу.

Ответ 6

Я использую следующее для 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...")

Ответ 7

Очень просто:

raw_input("Press Enter to continue ...")
exit()

Ответ 8

Print ("This is how you pause")

input()

Ответ 9

Как указано mhawke и steveha, лучший ответ на этот точный вопрос будет:

Для длинного блока текста лучше использовать input('Press <ENTER> to continue') (или raw_input('Press <ENTER> to continue') on Python 2.x), чтобы запрашивать пользователя, а не задержку времени. Быстрый читатель не захотят ждать задержки, медленным читателям может потребоваться больше времени на задержка, кто-то может быть прерван во время чтения и много больше времени и т.д. Кроме того, если кто-то много использует программу, он/она может привыкнуть к тому, как это работает, и не нужно даже читать длинные текст. Это просто более удобно, чтобы позволить пользователю контролировать, как долго блок текста отображается для чтения.

Ответ 10

Я думаю, что лучший способ остановить выполнение - это функция time.sleep(). если вам нужно приостановить выполнение только в определенных случаях, вы можете просто реализовать оператор if, например:

if somethinghappen:
    time.sleep(seconds)

вы можете оставить пустую ветку else.

Ответ 11

Я думаю, что мне нравится этот soln.

import getpass
getpass.getpass("Press Enter to Continue")

Он скрывает все, что вводит пользователь, что помогает уточнить, что ввод здесь не используется.

Но будьте внимательны на платформе OSX, она отображает ключ, который может сбить с толку.

It shows a key, like I said


Вероятно, лучшим решением было бы сделать что-то похожее на модуль getpass без вызова read -s. Может быть, чтобы цвет fg соответствовал bg?

Ответ 12

Для кросс-совместимости с Python 2/3 вы можете использовать input через six библиотек:

import six
six.moves.input( 'Press the <ENTER> key to continue...' )