Я знаю о die() команда в PHP, которая досрочно завершает скрипт.
Как я могу сделать это на Python?
задан 16 сен ’08, 13:09
10 ответы
import sys sys.exit()
Выход из Python. Это реализуется повышением SystemExit исключение, поэтому действия по очистке, указанные в предложениях finally в try операторы соблюдаются, и есть возможность перехватить попытку выхода на внешнем уровне.
Необязательный аргумент аргумент может быть целым числом, дающим статус выхода (по умолчанию равным нулю), или другим типом объекта. Если это целое число, ноль считается «успешным завершением», а любое ненулевое значение считается «аварийным завершением» оболочками и т.п. Большинство систем требует, чтобы он находился в диапазоне 0–127, в противном случае результаты не определены. Некоторые системы имеют соглашение о присвоении определенных значений конкретным кодам выхода, но они, как правило, недостаточно развиты; Программы Unix обычно используют 2 для синтаксических ошибок командной строки и 1 для всех других ошибок. Если передается другой тип объекта, None эквивалентно передаче нуля, и любой другой объект печатается в stderr и дает код выхода 1. В частности, sys.exit(«some error message») это быстрый способ выйти из программы при возникновении ошибки.
Красивый код на Python #айти #shorts
С exit() в конечном итоге «только» вызывает исключение, он выйдет из процесса только при вызове из основного потока, и исключение не будет перехвачено.
Предположительно sys.exit() не работает (не убивает процесс, просто убивает поток), если поднят фоновым потоком? — user607021
Есть ли способ завершить сценарий без создания исключения? Я уже передаю соответствующие флаги из сценария с print в stdout в Popen, поэтому исключение в этом случае вызывает больше проблем, чем решает. — Эллиот
Почему, когда я использую этот метод, я получаю следующее предупреждение: UserWarning: To exit: use ‘exit’, ‘quit’, or Ctrl-D. warn(«To exit: use ‘exit’, ‘quit’, or Ctrl-D.», stacklevel=1) — Билл
Нужны подробности; может быть, это заслуживает отдельного вопроса? — PJZ
Простой способ преждевременно прервать выполнение скрипта Python — использовать встроенный quit() функция. Нет необходимости импортировать какую-либо библиотеку, это эффективно и просто.
#do stuff if this == that: quit()
ответ дан 21 апр.

также sys.exit () завершит все сценарии python, но quit () завершит только сценарий, который его породил. — Вишал Девгире
Вы знаете, работает ли эта команда по-разному в Python 2 и Python 3? — Дэвид С.
Кто-нибудь знает, выйдет ли это из всего интерпретатора или просто остановит выполнение скрипта? Конкретно: для скрипта, запущенного в Spyder, интерпретатор Python останется интерактивным или он будет убит? Попробуйте просто остановить выполнение сценария, но оставьте интерактивность интерпретатора. — Demis
Самый БЫСТРЫЙ стандартный цикл Python − Интеграция с языком Си
для меня это говорит, что «бросить» не определено. Я использую python 3. — Винчензуоо
Я использую python 3.7, и quit () останавливает интерпретатор и закрывает скрипт. — RockAndRoleКодер
raise SystemExit
Для меня это идеальный способ: просто выйти из работающего скрипта, но не выходить из IDLE — RML
Вы также можете просто использовать exit() .
Имейте в виду, что sys.exit() , exit() , quit() , и os._exit(0) убивать интерпретатор Python. Следовательно, если он появляется в сценарии, вызванном из другого сценария execfile() , он останавливает выполнение обоих скриптов.
ответ дан 23 мая ’17, 13:05

Для меня os._exit (0) был для меня самым элегантным способом. Все остальные вызвали нежелательные ошибки — Абдулла Ашраф
Хотя вам обычно следует предпочесть sys.exit поскольку он более «дружелюбен» по отношению к другому коду, все, что он на самом деле делает, это вызывает исключение.
Если вы уверены, что вам нужно немедленно выйти из процесса, и вы можете оказаться внутри какого-то обработчика исключений, который поймает SystemExit , есть еще одна функция — os._exit — который немедленно завершается на уровне C и не выполняет никаких обычных операций по отключению интерпретатора; например, хуки, зарегистрированные в модуле «atexit», не выполняются.
Я только что обнаружил, что при написании многопоточного приложения raise SystemExit и sys.exit() оба убивают только работающий поток. С другой стороны, os._exit() выходит из всего процесса. Об этом говорилось в «Почему sys.exit () не завершается при вызове внутри потока в Python?».
В приведенном ниже примере 2 потока. Кенни и Картман. Картман должен жить вечно, но Кенни вызывается рекурсивно и должен умереть через 3 секунды. (рекурсивный вызов — не лучший способ, но у меня были другие причины)
Если мы также хотим, чтобы Картман умер вместе с Кенни, Кенни должен уйти с os._exit иначе умрет только Кенни, а Картман будет жить вечно.
import threading import time import sys import os def kenny(num=0): if num > 3: # print(«Kenny dies now. «) # raise SystemExit #Kenny will die, but Cartman will live forever # sys.exit(1) #Same as above print(«Kenny dies and also kills Cartman!») os._exit(1) while True: print(«Kenny lives: «.format(num)) time.sleep(1) num += 1 kenny(num) def cartman(): i = 0 while True: print(«Cartman lives: «.format(i)) i += 1 time.sleep(1) if __name__ == ‘__main__’: daemon_kenny = threading.Thread(name=’kenny’, target=kenny) daemon_cartman = threading.Thread(name=’cartman’, target=cartman) daemon_kenny.setDaemon(True) daemon_cartman.setDaemon(True) daemon_kenny.start() daemon_cartman.start() daemon_kenny.join() daemon_cartman.join()
ответ дан 21 апр.
Кажется, это единственный способ справиться с неприятно отложенными обратными вызовами! (т.е. многопоточные методы.) — не2кубит
Отличная работа. Ни один из других ответов напрямую не касается нескольких потоков, а только сценарии, порождающие другие сценарии. — анонимный
from sys import exit exit()
В качестве параметра вы можете передать код выхода, который будет возвращен ОС. По умолчанию 0.
ответ дан 05 мая ’12, 01:05
в моем случае мне даже не нужно было импортировать выход. — Костанос
Только для потомков на вышеупомянутый комментарий — exit() и sys.exit() это не одно и то же. Не используйте встроенный exit() в скриптах это просто помощник для интерактивной оболочки — используйте sys.exit() — Даверуин
Я новичок, но, конечно, это чище и управляемее
def main(): try: Answer = 1/0 print Answer except: print ‘Program terminated’ return print ‘You wont see this’ if __name__ == ‘__main__’: main()
import sys def main(): try: Answer = 1/0 print Answer except: print ‘Program terminated’ sys.exit() print ‘You wont see this’ if __name__ == ‘__main__’: main()
Программа завершена Traceback (последний вызов последним): файл «Z: Directory testdieprogram.py», строка 12, в main () Файл «Z: Directory testdieprogram.py», строка 8, в main sys.exit ( ) SystemExit
Дело в том, что программа заканчивается гладко и мирно, а не «Я ОСТАНОВЛЕН . «

Одна из проблем может заключаться в том, что если вы находитесь во вложенных функциях и просто хотите выйти, вам нужно либо отправить флаг полностью до верхней функции, либо вы просто вернетесь на следующий уровень выше. — сад
Это абсолютная чушь, если вы пытаетесь предположить, что можете использовать return чтобы завершить сценарий. Все return выполняет — возвращает значение и поток управления вызывающей функции. Там он продолжает выполнение сразу после вызова функции, которая вызвала return . Конечно, если return является последним оператором в вашем скрипте, как в вашем примере, тогда скрипт завершается сразу после его вызова. — Давид Ференци Рогожан
Есть веские аргументы в пользу этого подхода: (1) «выход» из середины, возможно, «goto», отсюда естественное отвращение; (2) «выход» в библиотеках определенно плохая практика (и все может стать библиотекой), так как библиотека считает «невосстановимым» обычно нормально гость. (Примечание: использование исключений для выходов — это практический обходной путь Python для разработчиков C / C ++ / Java, которые всегда неправильно вызывают exit — следовательно, программисты на Python могут не замечать зловония этого кода); и, наконец, (3) многопоточный код (который питонисты исторически просто игнорировали). — Майкл
В Python 3.5 я попытался включить аналогичный код без использования модулей (например, sys, Biopy), кроме встроенных, чтобы остановить скрипт и распечатать сообщение об ошибке для моих пользователей. Вот мой пример:
## My example: if «ATG» in my_DNA: ## else: print(«Start codon is missing! Check your DNA sequence!») exit() ## as most folks said above
Позже я обнаружил, что проще просто выдать ошибку:
## My example revised: if «ATG» in my_DNA: ## else: raise ValueError(«Start codon is missing! Check your DNA sequence!»)
ответ дан 05 апр.
Я полностью согласен с тем, что лучше создавать исключение для любой ошибки, которую может обработать приложение. Но вопрос заключался в том, как завершить сценарий Python, так что это не совсем (новый) ответ на вопрос. — Wovano
Python 3.8.1, Windows 10, 64-разрядная версия.
sys.exit() не работает напрямую у меня.
У меня есть несколько связанных петель.
Сначала я объявляю логическую переменную, которую называю immediateExit .
Итак, в начале программного кода я пишу:
immediateExit = False
Затем, начиная с исключения самого внутреннего (вложенного) цикла, я пишу:
immediateExit = True sys.exit(‘CSV file corrupted 0.’)
Затем я перехожу к непосредственному продолжению внешнего цикла и перед тем, как что-либо еще выполнит код, я пишу:
if immediateExit: sys.exit(‘CSV file corrupted 1.’)
В зависимости от сложности, иногда вышеуказанное утверждение необходимо повторить также в разделах, кроме разделов и т. Д.
if immediateExit: sys.exit(‘CSV file corrupted 1.5.’)
Специальное сообщение также предназначено для моей личной отладки, так как числа используются для той же цели — чтобы увидеть, где на самом деле завершается сценарий.
‘CSV file corrupted 1.5.’
В моем конкретном случае я обрабатываю файл CSV, который я не хочу, чтобы программа касалась его, если программа обнаруживает, что он поврежден. Поэтому для меня очень важно выйти из всего скрипта Python сразу после обнаружения возможного повреждения.
И после постепенного выхода из всех циклов мне это удается.
Полный код: (потребовались некоторые изменения, так как это проприетарный код для внутренних задач):
immediateExit = False start_date = ‘1994.01.01’ end_date = ‘1994.01.04’ resumedDate = end_date end_date_in_working_days = False while not end_date_in_working_days: try: end_day_position = working_days.index(end_date) end_date_in_working_days = True except ValueError: # try statement from end_date in workdays check print(current_date_and_time()) end_date = input(‘>> <> is not in the list of working days. Change the date (YYYY.MM.DD): ‘.format(end_date)) print(‘New end date: ‘, end_date, ‘n’) continue csv_filename = ‘test.csv’ csv_headers = ‘date,rate,brandn’ # not real headers, this is just for example try: with open(csv_filename, ‘r’) as file: print(‘***nOld file <> found. Resuming the file by re-processing the last date lines.nThey shall be deleted and re-processed.n***n’.format(csv_filename)) last_line = file.readlines()[-1] start_date = last_line.split(‘,’)[0] # assigning the start date to be the last like date. resumedDate = start_date if last_line == csv_headers: pass elif start_date not in working_days: print(‘***nn<> file might be corrupted. Erase or edit the file to continue.n***’.format(csv_filename)) immediateExit = True sys.exit(‘CSV file corrupted 0.’) else: start_date = last_line.split(‘,’)[0] # assigning the start date to be the last like date. print(‘nLast date:’, start_date) file.seek(0) # setting the cursor at the beginnning of the file lines = file.readlines() # reading the file contents into a list count = 0 # nr. of lines with last date for line in lines: #cycling through the lines of the file if line.split(‘,’)[0] == start_date: # cycle for counting the lines with last date in it. count = count + 1 if immediateExit: sys.exit(‘CSV file corrupted 1.’) for iter in range(count): # removing the lines with last date lines.pop() print(‘n<> lines removed from date: <> in <> file’.format(count, start_date, csv_filename)) if immediateExit: sys.exit(‘CSV file corrupted 1.2.’) with open(csv_filename, ‘w’) as file: print(‘nFile’, csv_filename, ‘open for writing’) file.writelines(lines) print(‘nRemoving’, count, ‘lines from’, csv_filename) fileExists = True except: if immediateExit: sys.exit(‘CSV file corrupted 1.5.’) with open(csv_filename, ‘w’) as file: file.write(csv_headers) fileExists = False if immediateExit: sys.exit(‘CSV file corrupted 2.’)
ответ дан 25 мар ’20, в 12:03
Источник: stackovergo.com
Как остановить / прекратить запуск скрипта Python?
Я написал программу в IDLE для токенизации текстовых файлов, и она начинает токенизировать 349 текстовых файлов! Как я могу это остановить? Как я могу остановить работающую программу Python?
user2943370 05 ноя ’13 в 04:46 2013-11-05 04:46
2013-11-05 04:46
19 ответов
Чтобы остановить вашу программу, просто нажмите Control + C.
user2670792 05 ноя ’13 в 04:49 2013-11-05 04:49
2013-11-05 04:49
Вы также можете сделать это, если вы используете exit() функция в вашем коде. В идеале вы можете сделать sys.exit() , sys.exit() может завершить Python, даже если вы запускаете вещи параллельно через multiprocessing пакет.
user2838606 01 дек ’15 в 20:27 2015-12-01 20:27
2015-12-01 20:27
Если ваша программа работает на интерактивной консоли, нажатие CTRL + C вызовет KeyboardInterrupt Исключение в основном потоке.
Если ваша программа на Python не улавливает ее, KeyboardInterrupt приведет к выходу Python. Тем не менее, except KeyboardInterrupt: блок или что-то вроде голого except: , будет препятствовать тому, чтобы этот механизм фактически останавливал выполнение сценария.
Иногда если KeyboardInterrupt не работает, вы можете отправить SIGBREAK сигнал вместо; в Windows интерпретатор CTRL + Pause / Break может обрабатываться интерпретатором без создания перехвата KeyboardInterrupt исключение.
Однако эти механизмы в основном работают, только если интерпретатор Python работает и реагирует на события операционной системы. Если интерпретатор Python по какой-то причине не отвечает, наиболее эффективным способом является завершение всего процесса операционной системы, на котором выполняется интерпретатор. Механизм этого зависит от операционной системы.
В среде оболочки в стиле Unix вы можете нажать CTRL + Z, чтобы приостановить любой процесс, который в данный момент контролирует консоль. Как только вы получите приглашение оболочки, вы можете использовать jobs список приостановленных работ, и вы можете убить первую приостановленную работу с kill %1 , (Если вы хотите запустить его снова, вы можете продолжить работу на переднем плане, используя fg %1 ; прочитайте руководство вашей оболочки по управлению заданиями для получения дополнительной информации.)
Кроме того, в Unix или Unix-подобной среде вы можете найти PID процесса Python (идентификатор процесса) и уничтожить его с помощью PID. Используйте что-то вроде ps aux | grep python чтобы найти, какие процессы Python запущены, а затем использовать kill отправить SIGTERM сигнал.
kill команда на Unix отправляет SIGTERM по умолчанию, и программа Python может установить обработчик сигнала для SIGTERM с использованием signal модуль. Теоретически, любой обработчик сигнала для SIGTERM должен завершить процесс изящно. Но иногда, если процесс застрял (например, заблокирован в состоянии непрерывного ввода-вывода), SIGTERM сигнал не имеет никакого эффекта, потому что процесс не может даже проснуться, чтобы справиться с ним.
Чтобы принудительно завершить процесс, который не отвечает на сигналы, необходимо отправить SIGKILL сигнал, иногда называемый kill -9 так как 9 это числовое значение SIGKILL постоянная. Из командной строки вы можете использовать kill -KILL (или же kill -9 для краткости) отправить SIGKILL и немедленно остановите процесс.
В Windows у вас нет системы сигналов процессов Unix, но вы можете принудительно завершить работающий процесс, используя TerminateProcess функция. В интерактивном режиме самый простой способ сделать это — открыть диспетчер задач, найти python.exe процесс, который соответствует вашей программе, и нажмите кнопку «Завершить процесс». Вы также можете использовать taskkill Команда для аналогичных целей.
Источник: stackru.com
Как остановить/завершить работу python script?
Я написал программу в IDLE для токенизации текстовых файлов, и она начинает tokeniza 349 текстовых файлов! Как я могу остановить его? Как я могу остановить запущенную программу Python?
ОТВЕТЫ
Ответ 1
Чтобы остановить программу, просто нажмите Control + C .
Ответ 2
Вы также можете сделать это, если вы используете функцию exit() в своем коде. Более идеально, вы можете сделать sys.exit() . sys.exit() может завершить работу Python, даже если вы запускаете вещи параллельно через пакет multiprocessing .
Ответ 3
Ctrl-Break он более мощный, чем Ctrl-C
Ответ 4
- Чтобы остановить python script, просто нажмите Ctrl + C .
- Внутри script с exit() вы можете это сделать.
- Вы можете сделать это в интерактивном script с просто выходом.
- Вы можете использовать pkill -f name-of-the-python-script .
Ответ 5
Если ваша программа работает на интерактивной консоли, нажатие CTRL + C вызовет исключение KeyboardInterrupt в главном потоке.
Если ваша программа Python не перехватит ее, KeyboardInterrupt заставит Python завершить работу. Однако блок except KeyboardInterrupt: или что-то вроде пустого except: не позволит этому механизму фактически остановить выполнение сценария.
Иногда, если KeyboardInterrupt не работает, вы можете вместо этого отправить сигнал SIGBREAK ; в Windows интерпретатор CTRL + Pause/Break может не обрабатывать перехватываемое исключение KeyboardInterrupt .
Однако эти механизмы в основном работают, только если интерпретатор Python работает и реагирует на события операционной системы. Если интерпретатор Python по какой-то причине не отвечает, наиболее эффективным способом является завершение всего процесса операционной системы, на котором выполняется интерпретатор. Механизм этого зависит от операционной системы.
В среде оболочки в стиле Unix вы можете нажать CTRL + Z , чтобы приостановить любой процесс, который в данный момент контролирует консоль. После того, как вы вернете приглашение оболочки, вы можете использовать jobs для отображения списка приостановленных заданий и убить первое приостановленное задание с помощью kill %1 . (Если вы хотите запустить его снова, вы можете продолжить работу на переднем плане, используя fg %1 ; для получения дополнительной информации прочтите руководство по оболочке по управлению заданиями.)
Кроме того, в Unix или Unix-подобной среде вы можете найти PID процесса Python (идентификатор процесса) и уничтожить его с помощью PID. Используйте что-то вроде ps aux | grep python ps aux | grep python для поиска запущенных процессов Python, а затем используйте kill для отправки сигнала SIGTERM .
Команда kill в Unix отправляет SIGTERM по умолчанию, и программа Python может установить обработчик сигнала для SIGTERM используя signal модуль. Теоретически, любой обработчик сигнала для SIGTERM должен SIGTERM завершить процесс. Но иногда, если процесс застрял (например, заблокирован в состоянии непрерывного ожидания ввода-вывода), сигнал SIGTERM не действует, потому что процесс не может даже проснуться, чтобы справиться с ним.
Чтобы принудительно завершить процесс, который не реагирует на сигналы, вам нужно отправить сигнал SIGKILL , который иногда называют kill -9 потому что 9 — это числовое значение константы SIGKILL . Из командной строки вы можете использовать kill -KILL (или kill -9 для краткости), чтобы отправить SIGKILL и немедленно остановить процесс.
В Windows у вас нет системы сигналов процессов Unix, но вы можете принудительно прервать запущенный процесс с помощью функции TerminateProcess . В интерактивном режиме самый простой способ сделать это — открыть диспетчер задач, найти процесс python.exe , соответствующий вашей программе, и нажать кнопку «Завершить процесс». Вы также можете использовать команду taskkill для аналогичных целей.
Ответ 6
Чтобы остановить запущенную программу, используйте CTRL + C, чтобы завершить процесс.
Чтобы обработать это программно в python, импортируйте модуль sys и используйте sys.exit() там, где вы хотите завершить программу.
import sys sys.exit()
Ответ 7
Ctrl + Z должен сделать это, если вы попали в оболочку Python. Имейте в виду, что экземпляры скрипта могут продолжать работать в фоновом режиме, поэтому в Linux вы должны будете завершить соответствующий процесс.
Ответ 8
Когда у меня работает скрипт Python на терминале Linux, CTRL +работает. (не CRTL + C или D)
Ответ 9
прерывание клавиатуры, т.е. Control+C
Ответ 10
вы также можете использовать Activity Monitor , чтобы остановить процесс py
Ответ 11
Чтобы остановить вашу программу, просто нажмите CTRL + D
Ответ 12
Control + D работает для меня в Windows 10. Кроме того, добавление exit() в конце также работает.
Ответ 13
Если вы работаете с Spyder, используйте CTRL +. (DOT) и вы перезапустите ядро, также вы остановите программу.
Ответ 14
Чтобы остановить скрипт Python с помощью клавиатуры: Ctrl + C
Чтобы остановить его с помощью кода (это работает для меня на Python 3):
import os os._exit(0)
вы также можете использовать:
import sys sys.exit()
exit()
raise SystemExit
Ответ 15
Нажмите Ctrl + Alt + Delete , и появится диспетчер задач.
Найдите команду Python, щелкните ее правой кнопкой мыши и выберите «Остановить» или «Убить».
Ответ 16
Программно вы можете использовать это:
while True: pass
Источник: utyatnishna.ru