Opriți în mod programatic executarea scriptului python? [duplicat] (Programare, Python)

Joan Venge a intrebat.

Este posibilă oprirea execuției unui script python la orice linie cu o comandă?

Cum ar fi

some code

quit() # quit at this point

some more code (that's not executed)

4 răspunsuri
Moses Schwartz

sys.exit() va face exact ceea ce doriți.

import sys
sys.exit("Error message")

joeforker

Ați putea raise SystemExit(0) în loc să vă deranjați atât de mult să import sys; sys.exit(0).

Comentarii

    16

  • De ce nu este acesta răspunsul acceptat? Există vreun motiv pentru a prefera import sys; sys.exit(0)? –  > Por pela.
  • Habar nu am dacă acest lucru este preferat sau nu, dar pentru mine funcționează. sys.exit() dă erori înainte de a ucide aplicația. –  > Por CodeNinja.
  • stackoverflow.com/questions/13992662/… – Nu este chiar o mare problemă. Este foarte posibil să folosiți deja sys, așa că sys.exit() IMHO este mai curat – user191152

Doriți sys.exit(). Din documentația Python:

>>> import sys
>>> print sys.exit.__doc__
exit([status])

Exit the interpreter by raising SystemExit(status).
If the status is omitted or None, it defaults to zero (i.e., success).
If the status is numeric, it will be used as the system exit status.
If it is another kind of object, it will be printed and the system
exit status will be one (i.e., failure).

Deci, în principiu, veți face ceva de genul următor:

from sys import exit

# Code!

exit(0) # Successful exit

Comentarii

  • Verificați acest lucru de ce funcționează exit() simplu fără a importa: docs.python.org/library/constants.html –  > Por George.
  • @gdivos, ca să citez din aceeași pagină: „Ele sunt utile pentru shell-ul interpretorului interactiv și nu ar trebui folosite în programe.” – utilizator3850
Algorias

The exit() și quit() funcții încorporate fac exact ceea ce doriți. Nu este nevoie de importul de sys.

Alternativ, puteți ridica SystemExit, , dar trebuie să aveți grijă să nu o prindeți nicăieri (ceea ce nu ar trebui să se întâmple atâta timp cât specificați tipul de excepție în toate blocurile try…).

Comentarii

    33

  • Referința bibliotecii Python precizează în mod explicit că aceste funcții trebuie utilizate numai în interpretorul interactiv și nu la în programe. –  > Por alldayremix.
  • Nu funcționează în scripturi. –  > Por ZuLu.
  • Funcționează cel puțin în versiunea 2.7.5 pentru executarea unui fișier python. –  > Por MasterControlProgram.
  • @alldayremix Am scris quit() în codul meu și nu funcționează. Dar nu am făcut documentul care spune că nu ar trebui să fie folosit în program: docs.python.org/3.7/library/constants.html#quit unde este documentul pe care l-ați menționat? Mulțumesc.  > Por YJZ.
  • @YJJZ este literalmente un rând deasupra liniei evidențiate pe pagina pe care ai legat-o –  > Por alldayremix.

Tags: