295 votes

Arrêter programmatiquement l'exécution du script de python ?

Est-il possible d'arrêter l'exécution d'un python script à n'importe quelle ligne avec une commande ?

Comme

some code

quit() # quit at this point

some more code (that's not executed)

465voto

Moses Schwartz Points 1449

sys.exit() fera exactement ce que vous voulez.

import sys
sys.exit("Error message")

4 votes

Il est toujours bon de n'importer que ce dont vous avez besoin. from sys import exit afin d'éviter d'importer des choses inutiles.

191voto

joeforker Points 14483

Vous pourriez raise SystemExit(0) au lieu de se donner la peine de import sys; sys.exit(0) .

23 votes

Pourquoi n'est-ce pas la réponse acceptée ? Y a-t-il une raison de préférer import sys; sys.exit(0) ?

3 votes

Je n'ai aucune idée si c'est préférable ou non mais pour moi cela fonctionne. sys.exit() donne des erreurs avant de tuer l'application.

0 votes

stackoverflow.com/questions/13992662/ - Ce n'est vraiment pas un gros problème. Il est fort possible que vous utilisiez déjà sys, donc sys.exit() est plus propre.

45voto

Tyson Points 3583

Quieres sys.exit() . Extrait de la documentation de Python :

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

Quitter l'interpréteur en levant SystemExit(status). Si le statut est omis ou nul, il prend la valeur zéro par défaut (c'est-à-dire le succès). Si le statut est numérique, il sera utilisé comme le statut de sortie du système. S'il s'agit d'un autre type d'objet, il sera imprimé et l'état de sortie du système et l'état de sortie du système sera égal à un (c'est-à-dire un échec).

Donc, en gros, vous allez faire quelque chose comme ça :

from sys import exit

# Code!

exit(0) # Successful exit

3 votes

Voyez pourquoi le simple exit() fonctionne sans importation : docs.python.org/library/constants.html

9 votes

@gdivos, pour citer cette même page : "Ils sont utiles pour le shell de l'interpréteur interactif et ne doivent pas être utilisés dans les programmes".

26voto

Algorias Points 1144

En exit() y quit() Les fonctions intégrées font exactement ce que vous voulez. Pas d'importation de sys nécessaire.

Alternativement, vous pouvez soulever SystemExit mais vous devez faire attention à ne pas l'attraper n'importe où (ce qui ne devrait pas arriver tant que vous spécifiez le type d'exception dans tous vos blocs try ).

36 votes

La référence de la bibliothèque Python indique explicitement que ces fonctions ne doivent être utilisées que dans l'interpréteur interactif et que no dans les programmes.

7 votes

Ne fonctionne pas dans scripts.

1 votes

Il fonctionne au moins dans la version 2.7.5 pour l'exécution d'un fichier python.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X