Вопрос-Ответ

How do I terminate a script?

Как мне завершить работу скрипта?

Как мне завершить работу скрипта досрочно, например, с помощью die() команды в PHP?

Переведено автоматически
Ответ 1
import sys
sys.exit()

подробности из sys документации по модулю:


sys.exit([arg])


Выход из Python. Это реализовано путем создания SystemExit исключения, поэтому действия по очистке, указанные в предложениях finally из try инструкций, выполняются, и можно перехватить попытку выхода на внешнем уровне.


Необязательный аргумент arg может быть целым числом, указывающим состояние завершения (по умолчанию равно нулю), или другим типом объекта. Если это целое число, ноль считается “успешным завершением", а любое ненулевое значение считается “ненормальным завершением” оболочками и тому подобным. Большинство систем требуют, чтобы он был в диапазоне 0-127, и в противном случае выдают неопределенные результаты. В некоторых системах есть соглашение о присвоении определенных значений определенным кодам выхода, но они, как правило, недостаточно развиты; программы Unix обычно используют 2 для синтаксических ошибок командной строки и 1 для всех других видов ошибок. Если передается объект другого типа, None эквивалентно передаче нуля, а любой другой объект печатается в stderr и приводит к коду выхода, равному 1. В частности, sys.exit("some error message") это быстрый способ завершить работу программы при возникновении ошибки.


Поскольку exit() в конечном итоге “только” вызывает исключение, он завершит процесс только при вызове из основного потока, и исключение не будет перехвачено.


Обратите внимание, что это "хороший" способ завершения. @glyphtwistedmatrix ниже указано, что если вам нужен "жесткий выход", вы можете использовать os._exit(*errorcode*), хотя, скорее всего, это в некоторой степени зависит от ОС (например, может не принимать код ошибки под Windows), и это определенно менее удобно, поскольку не позволяет интерпретатору выполнять какую-либо очистку перед завершением процесса. С другой стороны, это действительно останавливает весь процесс, включая все запущенные потоки, в то время как sys.exit() (как сказано в документации) завершается только при вызове из основного потока, без запуска других потоков.

Ответ 2

Простой способ досрочного завершения работы скрипта на Python - использовать встроенную quit() функцию. Нет необходимости импортировать какую-либо библиотеку, и это эффективно и просто.

Пример:

#do stuff
if this == that:
quit()
Ответ 3

Другой способ:

raise SystemExit
Ответ 4

Вы также можете использовать simply exit().

Имейте в виду, что sys.exit(), exit(), quit() и os._exit(0) убейте интерпретатор Python. Следовательно, если он появляется в скрипте, вызываемом из другого скрипта с помощью execfile(), он останавливает выполнение обоих скриптов.

Смотрите раздел "Остановить выполнение скрипта, вызываемого с помощью execfile", чтобы избежать этого.

python