Beenden / Beenden von Python-Skripten (einfache Beispiele)

Heute werden wir uns mit dem Thema Beenden/Beenden von Python-Skripten befassen! Bevor wir beginnen, sollten Sie ein grundlegendes Verständnis dafür haben, was Python ist, und einige grundlegende Kenntnisse über seine Verwendung.

Sie können die IDE Ihrer Wahl verwenden, aber ich werde dieses Mal das Linux-Subsystem für Windows (WSL) von Microsoft verwenden. Weitere Informationen dazu und wie Sie es unter Windows 10 aktivieren, finden Sie hier.

Inhaltsverzeichnis

Warum beendet Python ein Skript automatisch, wenn es fertig ist?,

Die Art und Weise, wie Python einen Codeblock ausführt, führt dazu, dass jede Zeile in der richtigen Reihenfolge ausgeführt wird, Abhängigkeiten zum Importieren überprüft, Definitionen und Klassen zum Speichern im Speicher gelesen und Code ausgeführt werden, um Schleifen und Aufrufe zu ermöglichen zurück zu den definierten Definitionen und Klassen.

Wenn der Python-Interpreter das Ende der Datei (EOF) erreicht, merkt er, dass er keine weiteren Daten aus der Quelle lesen kann, sei es die Eingabe des Benutzers über eine IDE oder das Lesen aus einer Datei. Um dies zu demonstrieren, versuchen wir, Benutzereingaben abzurufen und den Interpreter mitten in der Ausführung zu unterbrechen!,

Öffnen Sie zunächst von Ihrem Bash-Terminal in Ihrer PowerShell eine neue Datei mit dem Namen “ input.,n Fügen Sie Folgendes in die Shell ein, indem Sie mit der rechten Maustaste auf das PowerShell-Fenster klicken

name=input("Don"t type anything!\n")print("Hi,",name,"!")

Drücken Sie nun CTRL+X, um das Nano-Fenster zu speichern und zu verlassen und in Ihrem Shell-Typ:

$ python3 input.pyDon"t type anything!

Und drücken Sie CTRL+D, um das Programm zu beenden, während es auf Benutzereingaben wartet

Traceback (most recent call last):File "input.py", line 1, in name=input("Don"t type anything!")EOFError

Die EOFError – Ausnahme teilt uns mit, dass der Python-Interpreter die Bedingung end of file (EOF) erfüllt hat, bevor er den Code ausgeführt hat, da der Benutzer keine Eingabedaten eingegeben hat.,

Wenn Python die EOF-Bedingung gleichzeitig erreicht, dass der gesamte Code ausgeführt wurde, ohne Ausnahmen auszulösen, kann Python „anmutig“ beenden.“

Skriptausgang erkennen

Wenn wir feststellen möchten, wann ein Python-Programm beendet wird, ohne eine Ausnahme auszulösen, können wir das integrierte Python atexit Modul verwenden.

Dieatexit behandelt alles, was das Programm beim Beenden tun soll, und wird normalerweise zum Bereinigen des Programms verwendet, bevor der Programmprozess beendet wird

Um mit atexit zu experimentieren, ändern wir unsere Eingabe.,py Beispiel zum Drucken einer Nachricht beim Beenden des Programms. Öffnen Sie die input.py -Datei erneut und ersetzen Sie den text mit dieser

import atexitatexit.register(print,"Program exited successfully!")name=input("What"s your name?\n")print("Hi,",name,"!")

Geben Sie Ihren Namen, und wenn Sie die EINGABETASTE drücken, sollten Sie:

What"s your name?ExampleHi, Example !Program exited successfully!

Beachten Sie, wie die exit text wird am Ende der Ausgabe egal, wo wir die atexit anrufen, und wie, wenn wir ersetzen die atexit rufen Sie mit einem einfachen print() bekommen wir die Ausfahrt text, wo die print() alle gemacht wurde, statt, wo der code beendet wird.,

Program exited successfully!What"s your name?ExampleHi, Example !

xit

Es gibt mehrere Möglichkeiten, ein Python-Programm zu beenden, bei dem keine Ausnahme ausgelöst wird.Der erste Versuch warquit()

Sie können den bash-Befehlecho $? um den Exit-Code des Python-Interpreters zu erhalten.,

Wir können auch den Codetyp definieren, mit dem der Interpreter beendet werden soll, indem wir quit() ein ganzzahliges Argument von weniger als 256

exit() hat die gleiche Funktionalität wie ein Alias für quit()

Weder quit() noch exit() gelten als gute Praxis, da beide das Modul site erfordern, das für interaktive Dolmetscher und nicht für Programme verwendet werden soll., Für unsere Programme sollten wir so etwas wie sys.exit

Beachten Sie, dass wir ein Modul explizit importieren müssen, um exit() aufzurufen, dies scheint keine Verbesserung zu sein, garantiert jedoch, dass das erforderliche Modul geladen wird, da dies nicht der Fall ist eine gute Annahme site wird zur Laufzeit geladen., Wenn wir keine zusätzlichen Module importieren möchten, können wir das tun, was exit(), quit() und sys.exit() hinter den Kulissen tun und raise SystemExit

Beenden mit Fehlermeldungen Was ist, wenn wir schlechte Eingaben von einem Benutzer erhalten?, Schauen wir uns unser input.py – Skript an und fügen Sie die Möglichkeit hinzu, fehlerhafte Eingaben des Benutzers zu verarbeiten (CTRL+D um ein EOF-Zeichen zu übergeben)

Die – Anweisung weist Python an, den Code in der Anweisung auszuprobieren und eine Ausnahme zu übergeben an die except Anweisung vor dem Beenden.

Beenden ohne Fehler

Was ist, wenn der Benutzer Ihrem Programm einen Fehler übergibt, aber nicht möchte, dass Ihr Code einen Fehler druckt oder eine Art Fehlerbehandlung durchführt, um die Auswirkungen auf den Benutzer zu minimieren?,

Wir können eine finally Anweisung hinzufügen, mit der wir Code ausführen können, nachdem wir unsere Fehlerbehandlung in catch

EOFError aufgetreten ist, kann dies verwendet werden, um Standardwerte im Ereignis zu übergeben.von schlechter Eingabe oder Argumenten.,

Beenden und Freigeben Ihrer Ressourcen

Im Allgemeinen gibt Python alle Ressourcen frei, die Sie in Ihrem Programm aufgerufen haben, automatisch frei, wenn es beendet wird, aber für bestimmte Prozesse ist es eine gute Praxis, einige begrenzte Ressourcen in einen with Block.

Oft sehen Sie dies inopen() – Aufrufen, bei denen das nicht ordnungsgemäße Freigeben der Datei Probleme beim späteren Lesen oder Schreiben in die Datei verursachen kann.

with – block gibt automatisch alle Ressourcen beschlagnahmt, die innerhalb es., Wenn wir explizit sicherstellen möchten, dass die Datei geschlossen ist, können wir mit dem Befehl atexit.register() close()

$ nano openfile.pyimport atexitfile=open("testfile.txt","w")file.write("let"s write some text!\n")atexit.register(file.close)

Wenn Ressourcen aufgerufen werden, ohne einen with – Block zu verwenden, stellen Sie sicher, dass sie explizit in einem atexit Befehl.

Beenden Sie nach einiger Zeit

Wenn wir befürchten, dass unser Programm niemals normal beendet wird, können wir Pythons Modul multiprocessing verwenden, um sicherzustellen, dass unser Programm beendet wird.,

Beachten Sie, dass der Vorgang nicht abgeschlossen wurde, als die Funktion aufgefordert wurde, 7 Sekunden zu warten, aber fertig war und druckte, was es sollte, als gesagt wurde, 0 Sekunden zu warten!

Beenden mit einer return-Anweisung

Wenn wir einen Codeabschnitt haben, mit dem wir das gesamte Programm beenden möchten, anstatt die break – Anweisung Code außerhalb der Schleife fortsetzen zu lassen, können wir die return sys.exit() verwenden, um den Code vollständig zu beenden.,

Beenden in der Mitte einer Funktion

Wenn wir nicht wollen, verwenden Sie eine return-Anweisung, können wir immer noch rufen Sie die sys.exit() schließen unser Programm und sorgen für eine return in einem anderen Zweig. Verwenden wir unseren Code von break.py wieder.

Exit wenn Bedingungen erfüllt sind

Wenn wir eine Schleife in unserem Python-Code haben und sicherstellen möchten, dass der Code beendet werden kann Wenn ein Problem auftritt, können wir ein Flag verwenden, das überprüft werden kann, um das Programm zu beenden.,

Beenden beim Tastendruck

Wenn wir unser Programm in der Konsole offen halten möchten, bis wir eine Taste drücken, können wir eine ungebundene input() verwenden, um es zu schließen.

$ nano holdopen.pyinput("Press enter to continue")$ python3 holdopen.pyPress enter to continue$

Wir können auch CTRL+C an die Konsole übergeben, um Python ein KeyboardInterrupt Zeichen zu geben. Wir können sogar die KeyboardInterrupt Ausnahme behandeln, wie wir Ausnahmen zuvor behandelt haben.,

Beenden eines Multithread-Programms

Das Beenden eines Multithread-Programms ist etwas komplizierter, da eine einfache sys.exit() aus dem Thread aufgerufen wird, der nur den aktuellen Thread beendet., Die „schmutzige“ Art, dies zu tun, besteht darin, os._exit()

Wie Sie sehen, hat das Programm den Rest des Programms nicht gedruckt, bevor es beendet wurde, weshalb os._exit() normalerweise für einen letzten Ausweg reserviert ist und entweder Thread.join() aus dem Hauptthread ist die bevorzugte Methode zum Beenden eines Multithread-Programms.,

End without sys exit

Sys.exit() ist nur eine von mehreren Möglichkeiten, wie wir unsere Python-Programme beenden können, was sys.exit() tut, ist raise SystemExit, sodass wir genauso einfach jede integrierte Python-Ausnahme oder erstellen Sie eine unserer eigenen!

Wir können auch die os._exit() verwenden, um das Hostsystem anzuweisen, den Python-Prozess abzubrechen, obwohl dies nicht der Fall ist atexit Bereinigung.,

Exit bei exception

Wenn wir eine exception ohne Behandlung beenden möchten, können wir unseren try-except block verwenden, um os._exit()auszuführen.

Beenden und neu starten

Schließlich werden wir untersuchen, was wir tun, um Python zu beenden und das Programm neu zu starten, was in vielen Fällen nützlich ist.

ich hoffe, Ihr findet das tutorial hilfreich. Komm immer wieder zurück.

Danke.,

Gründer von LikeGeeks. Ich arbeite seit 2010 als Linux-Systemadministrator. Ich bin verantwortlich für die Wartung, Sicherung und Fehlerbehebung von Linux-Servern für mehrere Clients auf der ganzen Welt. Ich liebe es, Shell-und Python-Skripte zu schreiben, um meine Arbeit zu automatisieren.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.