Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Wenn ich das in der Python IDLE Shell ausführe ist alles super, da die Comandozeilenausgaben erhalten bleiben. Wenn ich aber die Python Datei ganz normal in Windows ausführe wird mir am Ende die Console geschlossen und keiner sieht die Fehlermeldung. Gibt es so etwas wie sys.stop anstelle von sys.exit, welches nur das Programm anhält aber nicht die Windowsconsole schließt?
Konsolenprogramme, werden, wie der Name schon sagt, aus der Konsole heraus gestartet. Also 1. Windows-Eingabeaufforderung öffnen, 2. Python-Programm starten. Dann bleibt auch aller Text sichtbar.
@qdox: Das `sys.exit()` ist hier sinnlos und überflüssig und für das ebenfalls sinnfreie `input()` wird Dich jeder Benutzer hassen der das Programm in einer Konsole ausführt, wie das ja eigentlich bei Konsolenprogrammen gedacht ist, und noch mehr, wenn man versucht das Programm aus einem anderen Programm heraus auszuführen, und sich dann am Ende mit diesem Mist herumschlagen zu müssen, weil das nicht einfach normal endet, sondern unbedingt noch mit einer sinnlosen Eingabe gefüttert werden will.
“Ich bin für die Todesstrafe. Wer schreckliche Dinge getan hat, muss eine angemessene Strafe bekommen. So lernt er seine Lektion für das nächste Mal.” — Britney Spears, Interview in der französischen Zeitung Libération, 2. April 2002
@qdox: Danke, das ist eine super Idee, so etwas habe ich gesucht.
@_blackjack_: Es ist immer eine Frage für was das Tool genutzt wird. Im meinem Fall ist es ein Hilfsskript in Windows, welches ich nicht extra über die Console ausführen möchte. Allerdings muss man vorher Pfade in einer Config Datei einfügen. Wenn diese nicht passen hätte ich schon gern, dass der Benutzer weiß warum es nicht funktioniert. Daher ist das eine Top Lösung für mich.
Prinzipiell könntest du die Eingaben einfach über If-Bedingungen überprüfen. Wenn du möchtest, dass bestimmte Eingaben wie ein klassischer Fehlerfall behandelt werden, kannst du auch selbst eine Exception werfen und diese gegebenenfalls auch Abfangen.
Zunächst ein Beispiel, in dem das Programm mit einer Fehlermeldung abbricht:
# Eine Beispiel-Funktion die einen Fehler bei einer bestimmten Eingabe werfen soll:
def hier_soll_nichts_schief_gehen(value):
if value == "Ungültig":
raise ValueError("Ungültig darf nicht verwendet werden!")
else:
print("Alles hat funktioniert!")
#Bei Ungültig soll nun die Nachricht der Fehlermeldung angezeigt werden
var = "Ungültig"
hier_soll_nichts_schief_gehen(var)
Als Output erhältst du hier einen Traceback und als Wert des ValueErrors wird deine Wunschnachricht ausgegeben. Alternativ kannst du mit einem Try-Block den Fehler auch abfangen und die Laufzeit kontrolliert beenden lassen. Dann wird deine Meldung ebenfalls ausgegeben, aber der Traceback bleibt aus:
var = "Ungültig"
try:
hier_soll_nichts_schief_gehen(var)
except ValueError as error:
print(error)
Codroid ist eine Programmierschule in der das praktische Programmieren mit Python unterrichtet wird. Falls du Interesse hast, dann schreibe gerne eine PN oder email.