2008-10-07 7 views
105

Можно создать дубликат:
Terminating a Python scriptКак прервать выполнение скрипта Python?

У меня есть простой скрипт на Python, который я хочу, чтобы остановить выполнение, если условие выполнено.

Например:

done = True 
if done: 
    # quit/stop/exit 
else: 
    # do other stuff 

По существу, я ищу что-то, что ведет себя то же самое в «обратном» ключевое слово в теле функции, которая позволяет поток кода для выхода из функции, а не выполнять оставшийся код.

ответ

183

Для выхода из сценария можно использовать,

import sys 
sys.exit() 

Вы также можете предоставить значение состояния выхода, как правило, целое число.

import sys 
sys.exit(0) 

Выход с нулем, который обычно интерпретируется как успех. Ненулевые коды обычно рассматриваются как ошибки. По умолчанию используется выход с нулем.

import sys 
sys.exit("aa! errors!") 

Печать «aa! Errors!» и выходы со кодом состояния 1.

В модуле os также есть функция _exit(). Функция sys.exit() вызывает исключение SystemExit для выхода из программы, поэтому могут выполняться операторы try и cleanup. Версия os._exit() не делает этого. Он просто заканчивает программу без каких-либо очистки или промывки выходных буферов, поэтому ее обычно не следует использовать.

Python docs указывает, что os._exit() является обычным способом завершения дочернего процесса, созданного с вызовом os.fork(), поэтому он имеет возможность использования в определенных обстоятельствах.

4

выход() должен сделать трюк

+0

Через несколько секунд быстрее меня: P – Dana 2008-10-07 16:48:40

+3

И я даже сначала его протестировал в оболочке :-) – Sec 2008-10-07 16:50:06

+0

Черт вас, я не сделал см. это/реагировать вовремя (также проверялось в интерпретаторе, чтобы быть уверенным) * shakes fist *;) – Runevault 2008-10-07 16:50:50

3

Если вся программа должна прекратить использовать sys.exit(), в противном случае просто используйте пустой возврат.

13

Вы можете поместить тело вашего скрипта в функцию, а затем вы можете вернуться из этой функции.

def main(): 
    done = True 
    if done: 
    return 
    # quit/stop/exit 
    else: 
    # do other stuff 

if __name__ == "__main__": 
    #Run as main program 
    main() 
11

Вы можете использовать:

import sys 
sys.exit(...) 

или:

raise SystemExit(...) 

Дополнительный параметр может быть код выхода или сообщение об ошибке. Оба метода идентичны. Раньше я предпочитал sys.exit, но в последнее время я переключился на повышение SystemExit, потому что он кажется лучше среди остальной части кода (из-за ключевого слова raise).

0

Попробуйте

sys.exit("message") 

Это похоже на Perl

die("message") 

, если это то, что вы ищете. Это прекращает выполнение скрипта, даже если он вызван из импортированного модуля/def/function

Смежные вопросы