Terminare uno script Python

Sono a conoscenza del comando die() in PHP che ferma uno script in anticipo.

Come posso fare questo in Python?

Soluzione
import sys
sys.exit()

dettagli dalla documentazione del modulo sys:

sys.exit([arg])

Esce da Python. Questo è implementato sollevando il l'eccezione SystemExit, quindi le azioni di pulizia specificate dalle clausole finally di dichiarazioni try sono onorate, ed è possibile intercettare il tentativo di uscita ad un livello esterno.

L'argomento opzionale arg può essere un intero che dà lo stato di uscita (di default a zero), o un altro tipo di oggetto. Se è un intero, zero è considerato "terminazione riuscita" e qualsiasi valore diverso da zero è considerato "terminazione anomala" dalle shell e simili. La maggior parte dei sistemi richiedono che sia nell'intervallo 0-127, e producono risultati non definiti altrimenti. Alcuni sistemi hanno una convenzione per assegnare specifici significati a specifici codici di uscita, ma questi sono generalmente poco sviluppati; i programmi Unix generalmente usano 2 per la sintassi della linea di comando errori e 1 per tutti gli altri tipi di errori. Se un altro tipo di oggetto viene passato, None è equivalente a passare zero, e qualsiasi altro oggetto viene stampato su stderr e risulta in un codice di uscita di 1. In particolare, sys.exit("qualche messaggio di errore") è un modo veloce per uscire da un programma quando si verifica un errore.

Poiché exit() alla fine "solleva solo" un'eccezione, uscirà solo il processo quando viene chiamato dal thread principale, e l'eccezione non viene intercettata.

Notate che questo è il 'nice' modo di uscire. @glyphtwistedmatrix qui sotto fa notare che se volete una 'hard exit', potete usare os._exit(errorcode), sebbene sia probabilmente os-specifico in qualche misura (potrebbe non prendere un errorcode sotto windows, per esempio), e sicuramente è meno amichevole poiché non permette all'interprete di fare alcuna pulizia prima che il processo muoia.

Commentari (7)

Un altro modo è:

raise SystemExit
Commentari (2)
from sys import exit
exit()

Come parametro si può passare un codice di uscita, che verrà restituito al SO. Il valore predefinito è 0.

Commentari (2)