Ukončení/Ukončení Python skripty (Jednoduché Příklady)

Dnes, budeme potápění do tématu opuštění/ukončení Python skripty! Než začneme, měli byste mít základní znalosti o tom, co je Python, a některé základní znalosti o jeho použití.

můžete použít IDE dle vašeho výběru, ale tentokrát použiji balíček Microsoft Linux Subsystem pro Windows (WSL). Další informace o tom a o tom, jak jej povolíte v systému Windows 10, naleznete zde.

obsah

proč Python automaticky ukončí skript, když je hotovo?,

způsob, jak Python provede blok kódu umožňuje provést každý řádek v pořadí, kontrola závislostí na dovozu, čtení, definice a třídy pro ukládání do paměti a provádění kusy kódu v pořadí, což pro smyčky a volání zpět do vymezené definice a třídy.

Když Python interpret dosáhne konce souboru (EOF), zjistí, že nemůže číst data ze zdroje, ať už je to vstup uživatele prostřednictvím IDE nebo čtení ze souboru. Chcete-li demonstrovat, zkusme získat vstup uživatele a přerušit tlumočníka uprostřed provádění!,

nejprve z terminálu bash v PowerShellu otevřete nový soubor s názvem “ vstup.,n vložte následující do pláště kliknutím pravým tlačítkem na okno prostředí PowerShell

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

Nyní stiskněte CTRL+X uložte a ukončete nano okno a v shellu typ:

$ python3 input.pyDon"t type anything!

A stiskněte tlačítko CTRL+D ukončit program, když čeká na vstup od uživatele

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

EOFError výjimka nám říká, že Python interpret narazí na konec souboru (EOF) stav před tím, než skončil provádění kódu, jako uživatel zadán žádný vstupní data.,

Když Python dosáhne stavu EOF současně s tím, že provedl veškerý kód bez házení výjimek,což je jeden způsob, jak Python může „elegantně ukončit“.“

Detect script exit

Pokud chceme zjistit, kdy Python program ukončí bez vyhazování výjimky, můžeme použít vestavěný Python atexit modul.

atexit úchyty cokoliv chceme, aby program dělat, když se to ukončí a je obvykle používán dělat program vyčistit dříve, než program, proces se ukončí.

experimentovat s atexit, pojďme změnit náš vstup.,py příklad pro tisk zprávy na ukončení programu. Otevřete input.py soubor znovu a nahradit text s tímto

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

Zadejte své jméno, a když stisknete enter, měli byste si:

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

Všimněte si, jak výstupní text se zobrazí na konci výstupu bez ohledu na to, kde jsme místo atexit zavolejte, a jak, pokud bychom nahradit atexit volat s jednoduchým print(), dostaneme na výstupu text, kde print() bylo vše stvořeno, spíše než tam, kde kód východy.,

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

Elegantní exit

Existuje několik způsobů, jak ukončit Program v Pythonu, který nezahrnuje házení výjimku; první se bude snažit je quit()

můžete použít bash příkaz echo $? chcete-li získat ukončovací kód Pythonu.,

můžeme také definovat typ kód tlumočník by měl opustit s tím, že podal quit() integer argument méně než 256

exit() má stejnou funkci jako je alias pro quit()

Ani quit() ani exit() jsou považovány za dobrou praxi, protože oba vyžadují site modul, který je určen k použití na interaktivní tlumočníků a ne v programech., Pro naše programy, bychom měli použít něco jako sys.exit

Všimněte si, že musíme explicitně importovat modul pro volání exit(), to se může zdát jako zlepšení, ale to zaručuje, že potřebné modul je načten, protože to není dobrý předpoklad site budou načteny za běhu., Pokud nechceme importovat další moduly, můžeme dělat, co exit(), quit() sys.exit() dělají v zákulisí a raise SystemExit

Konec s chybové zprávy

Co když budeme mít špatný vstup od uživatele?, Pojďme se podívat na naši input.py scénář, a přidat schopnost zvládnout špatný vstup od uživatele (CTRL+D předat EOF znak)

try prohlášení říká, Python vyzkoušet kódu uvnitř prohlášení a předat žádnou výjimku except prohlášení před ukončením.

Ukončení bez chyby

Co když uživatel ruce vašem programu chybu, ale nechcete, aby váš kód k tiskové chybě, nebo dělat nějaký druh zpracování chyb, aby se minimalizovalo uživatele dopad?,

můžeme přidat finally prohlášení, že nám umožňuje spustit kód poté, co jsme dělat naše zpracování chyb v catch

Všimněte si, že uživatel by nikdy vědět, EOFError došlo, to může být použit předat výchozí hodnoty v případě špatného zadání či argumenty.,

Opustit a uvolnit své zdroje

Obecně platí, že Python uvolní všechny zdroje, které jsem volal v programu automaticky, když se ukončí, ale pro určité procesy, je vhodné obalit některé omezené zdroje v with blok.

Často uvidíte to v open() hovory, kde neplní řádně vydání souboru může způsobit problémy při čtení nebo zápisu do souboru později.

with blokovat automaticky uvolní všechny zdroje, zažádal v rámci to., Pokud bychom chtěli více explicitně ujistěte se, že soubor byl uzavřen, mohli bychom použít atexit.register() příkaz call close()

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

Pokud zdroje jsou povoláni bez použití with blok, ujistěte se, že explicitně uvolnění je v atexit příkaz.

Exit po čase

Pokud se obáváme, že náš program nemusí nikdy normálně skončit, můžeme použít modul Python multiprocessing, abychom zajistili ukončení našeho programu.,

Všimněte si, jak proces nepodařilo dokončit, když se funkce bylo mi řečeno, čekat za 7 sekund, ale vyplněný a vytištěný, co to mělo, když to bylo řečeno, čekat 0 sekund!

Ukončení pomocí return

Pokud máme část kódu chceme využívat ukončit celý program, místo toho, aby break prohlášení i nadále kód mimo smyčky, můžeme použít return sys.exit() exit kód úplně.,

Exit uprostřed funkce

Pokud nechceme použít return prohlášení, můžeme stále říkat, sys.exit() zavřít program a poskytnout return v jiném oboru. Použijeme náš kód z break.py znovu.

Výstupu, pokud jsou splněny podmínky

máme-Li smyčku v naší Python kód a my chceme, aby se ujistěte se, že kód může ukončit, pokud narazí na problém, můžeme použít příznak, který může kontrolu ukončit program.,

Exit o stisknutím tlačítka

Pokud se chceme držet našeho programu otevřete v konzole, dokud jsme stiskněte klávesu, můžeme použít v nevázaný input() zavřít.

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

můžeme také předat CTRL+C do konzole dát Python KeyboardInterrupt charakter. Můžeme dokonce zvládnout výjimku KeyboardInterrupt, jako jsme dříve řešili výjimky.,

Exit multithreaded programu

Ukončení vícevláknový program je o něco více zapojit, jako jednoduchý sys.exit() je volána z vlákna, které bude jen opustit aktuální vlákno., „Špinavé“ způsob, jak to udělat, je použít os._exit()

Jak můžete vidět, program neotiskli zbytek programu před tím, než vyšla, a to je důvod, proč os._exit() je obvykle vyhrazena pro poslední možnost, a volat buď Thread.join() z hlavní vlákno je preferovanou metodou pro ukončení vícevláknových programu.,

Konce, aniž sys exit

Sys.exit() je pouze jedním z několika způsobů, jak můžeme opustit náš Python programy, co sys.exit() raise SystemExit, takže můžeme stejně snadno použít jakýkoliv vestavěný Python výjimkou, nebo si vytvořte vlastní!

můžeme také použít os._exit() říct hostitelského systému zabít python proces, ačkoli to není atexit vyčištění.,

Exit na výjimky

chceme-Li výstup na výjimky bez nějaké manipulace, můžeme použít naše try-except blok execute os._exit().

ukončete a restartujte

nakonec prozkoumáme, co děláme pro ukončení Pythonu a restartování programu, což je v mnoha případech užitečné.

doufám, že vám tutoriál bude užitečný. Vrať se.

Děkuji.,

Zakladatel LikeGeeks. Od roku 2010 pracuji jako správce systému Linux. Jsem zodpovědný za údržbu, zabezpečení a odstraňování problémů s linuxovými servery pro více klientů po celém světě. Miluji psaní skriptů shell a Python pro automatizaci mé práce.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *