Come posso interrompere l'esecuzione di uno script Python? [duplicare]
Domanda
Possibile duplicato:
Terminare uno script Python
Ho un semplice script Python che voglio interrompere l'esecuzione se viene soddisfatta una condizione.
Ad esempio:
done = True
if done:
# quit/stop/exit
else:
# do other stuff
In sostanza, sto cercando qualcosa che si comporti in modo equivalente alla parola chiave "return" nel corpo di una funzione che consente al flusso del codice di uscire dalla funzione e di non eseguire il codice rimanente.
Soluzione
Per uscire da uno script puoi usare,
import sys
sys.exit()
Puoi anche fornire un valore dello stato di uscita, generalmente un numero intero.
import sys
sys.exit(0)
Esce con zero, che viene generalmente interpretato come successo. I codici diversi da zero vengono generalmente trattati come errori. L'impostazione predefinita è uscire con zero.
import sys
sys.exit("aa! errors!")
Stampa " aa! ! Errori " ed esce con un codice di stato di 1.
Esiste anche una funzione _exit () nel modulo os. La funzione sys.exit () solleva un'eccezione SystemExit per uscire dal programma, quindi provare a eseguire istruzioni e codice di pulizia. La versione os._exit () non lo fa. Termina semplicemente il programma senza eseguire la pulizia o lo svuotamento dei buffer di output, quindi normalmente non dovrebbe essere utilizzato.
I Documenti Python indicano che os._exit () è il modo normale di terminare un processo figlio creato con una chiamata a os.fork (), quindi può essere utile in determinate circostanze.
Altri suggerimenti
import sys
sys.exit()
Potresti mettere il corpo del tuo script in una funzione e poi puoi tornare da quella funzione.
def main():
done = True
if done:
return
# quit/stop/exit
else:
# do other stuff
if __name__ == "__main__":
#Run as main program
main()
Puoi usare:
import sys
sys.exit(...)
o
raise SystemExit(...)
Il parametro opzionale può essere un codice di uscita o un messaggio di errore. Entrambi i metodi sono identici. Preferivo sys.exit, ma ultimamente sono passato a rilanciare SystemExit, perché sembra risaltare meglio tra il resto del codice (grazie alla parola chiave raise ).
exit () dovrebbe fare il trucco
exit () dovrebbe farlo.
Prova
sys.exit("message")
È come il perl
die("message")
se questo è quello che stai cercando. Termina l'esecuzione dello script anche se viene chiamato da un modulo / def / function importato
Se l'intero programma dovesse smettere di usare sys.exit (), altrimenti usa semplicemente un ritorno vuoto.