2017-07-14 5 views
0

J'écris un code dans lequel il y a différentes fonctions. J'ai créé des fichiers .py pour chaque fonction spécifique et je les importe chaque fois que nécessaire. Exemple de code:Quitter tous les modules en python

# main.py file 
import addition 
import subtraction 
a = input("enter a") 
b = input("enter b") 
c = input("enter 1 to add 2 to subtract") 
if a == 1: 
    addition.add(a, b) # call to add function in addition module 
    subtraction.minus(a, b) # call to subtract function in subtraction module 
# More code here 

# addition.py module 
import game # import another self-created module 
y = input("do you want to play a game? Enter 1 if yes and 0 if no") 
if y == 1: 
    game.start() 
# more similar code 

Maintenant, puisque vous pouvez voir que j'appelle des modules à l'intérieur de modules à plusieurs niveaux. Donc, ma question est dans mon module game, si j'utilise la commande de sortie pour terminer le code, cela mettra-t-il fin à l'exécution entière ou seulement au module game? J'ai besoin d'une commande pour quitter l'exécution complète du code au fur et à mesure que je reçois une exception dans mon code.

NOTE: Je ne souhaite pas que la commande exit imprime quoi que ce soit sur la console. Comme j'avais utilisé sys.exit() une fois auparavant dans un autre projet, il imprime des avertissements sur la console dont je n'ai pas besoin car le projet est destiné aux personnes qui ne comprendraient pas cet avertissement.

+0

Si vous souhaitez mettre fin à votre application, vous pouvez utiliser '' sys.exit() '' - [docs] (https: //docs.python.org/3.6/library/constants.html#exit).Note complémentaire: vous devriez envisager de structurer votre code en utilisant des fonctions. –

+0

J'ai structuré mon code dans les fonctions aussi et il fonctionne correctement. Mais puisque mon code est gros de 800 lignes et plus, je dois faire une bibliothèque pour la même chose car il a différentes phases. –

+0

En outre, sys.exit() imprime des avertissements que je ne veux pas imprimer sur la console car le projet sera destiné à des personnes non techniques. –

Répondre

1

si j'utilise la commande de sortie pour mettre fin au code, il va mettre fin à toute l'exécution

Oui, il (en supposant que vous dire sys.exit()).

ou tout simplement le module de jeu

Non, il quitte le programme.

+0

Merci cela fonctionne. –

2

Si vous êtes inquiet que sys.exit() "imprime des avertissements" (ce que je ne peux pas confirmer sur mon système - l'application existe et aucun avertissement n'est imprimé dans la console), vous pouvez simplement lister SystemExit avec un message de votre choix:

raise SystemExit("Everything is fine.") 
+0

Excellent conseil! +1 pour ça. –

0

Si vous souhaitez masquer des avertissements lorsque les sorties du programme (ces avertissements sont pile probablement des traces, difficile à deviner de votre question), vous pouvez envelopper votre code dans essayer except:

import addition 
import subtraction 
try: 
    a = input("enter a") 
    b = input("enter b") 
    c = input("enter 1 to add 2 to subtract") 
    if a == 1: 
     addition.add(a, b) # call to add function in addition module 
     subtraction.minus(a, b) # call to subtract function in subtraction module 
    # ... 
except Exception: 
    pass 

Remarque que cette techni ce qui est considéré comme très mauvais et vous devriez probablement enregistrer vos exceptions par exemple dans un fichier.

Dix modules dans votre insend de sys.exit utilisateur() utiliser:

# addition.py module 
import game # import another self-created module 
y = input("do you want to play a game? Enter 1 if yes and 0 if no") 
if y == 1: 
    game.start() 
# more similar code 

# suppose you want to exit from here 
# dont use sys.exit() 
# use 
raise Exception("Something went wrong") 

log finnaly exceptions fichier

import addition 
import subtraction 
import logging 

# log to file 
logging.basicConfig(filename='exceptions.log',level=logging.DEBUG) 
try: 
    a = input("enter a") 
    b = input("enter b") 
    c = input("enter 1 to add 2 to subtract") 
    if a == 1: 
     addition.add(a, b) # call to add function in addition module 
     subtraction.minus(a, b) # call to subtract function in subtraction module 
    # ... 
except Exception as e: 
    logging.exception(e) 

En utilisant ce votre utilisateur ne verra aucun message sur la console lorsque votre programme se termine accidentellement. Vous serez en mesure de voir quelles exceptions se sont produites en lisant le fichier excetions.log.

Plus d'info