ma a Python szkriptek kilépésének/megszüntetésének témájába merülünk! Mielőtt elkezdenénk, meg kell egy alapvető megértése, hogy mi a Python, és néhány alapvető ismereteket annak használatát.
használhatja az Ön által választott IDE-t, de ezúttal a Microsoft Linux alrendszerét fogom használni a Windows (WSL) csomaghoz. További információért, hogy hogyan engedélyezheti a Windows 10 rendszeren, menjen ide.
Tartalomjegyzék
miért lép ki a Python automatikusan egy szkriptből, ha kész?,
ahogy Piton végrehajt egy kód blokk teszi, hogy végre minden sor annak érdekében, függőségek ellenőrzése, hogy a behozatali, olvasás definíciók, osztályok tárolja a memóriában, mind a végrehajtó darab kódot annak érdekében, lehetővé téve, hogy a hurkok, illetve hívja vissza, hogy a meghatározott definíciók, osztályok.
amikor a Python értelmező eléri a fájl végét (EOF), észreveszi, hogy nem tud több adatot olvasni a forrásból, függetlenül attól, hogy ez a felhasználó bemenete IDE-n keresztül, vagy egy fájlból olvas. Demonstrálni, próbáljuk meg a felhasználó bemenet, majd megszakítja a tolmács közepén végrehajtás!,
először a PowerShellben lévő bash terminálról nyisson meg egy új “input” nevű fájlt.,n másolja be az alábbi mezőbe a shell jobb gombbal kattintva a PowerShell ablak
name=input("Don"t type anything!\n")print("Hi,",name,"!")
Most, nyomja meg a CTRL+X
mentéséhez, majd lépjen ki a nano ablakot, majd a shell típus:
$ python3 input.pyDon"t type anything!
lehetőséget, Majd nyomja meg a CTRL+D
a program befejezéséhez, amíg vár a felhasználói input
Traceback (most recent call last):File "input.py", line 1, in name=input("Don"t type anything!")EOFError
A EOFError
kivéve azt mondja, hogy a Python értelmező elérje a végén a fájl (EOF) állapotát, mielőtt befejezte végrehajtó a kód, a felhasználó lépett be nem bemeneti adatok.,
amikor Python eléri az EOF feltétel ugyanakkor, hogy végrehajtotta az összes kódot dobás nélkül kivételeket, ami az egyik módja Python kiléphet ” kecsesen.”
Detect script exit
Ha azt akarjuk mondani, ha egy Python program kilép dobás nélkül kivétel, tudjuk használni a beépített Python atexit
modul.
Aatexit
kezeli, amit akarunk, hogy a program, ha kilép jellemzően régen program takarítani, mielőtt a program a folyamat megszűnik
kísérletezni atexit, hadd módosítsa a beviteli.,Py példa egy üzenet nyomtatásához a program kijáratánál. Nyissa meg a input.py a fájl újra cserélje ki a szöveg ezzel
import atexitatexit.register(print,"Program exited successfully!")name=input("What"s your name?\n")print("Hi,",name,"!")
Írja be a nevet, majd ha bejön, meg kéne:
What"s your name?ExampleHi, Example !Program exited successfully!
Figyeljük meg, hogy a kilépés szöveg végén jelenik meg a kimeneti nem számít, hogy hol helyezzük a atexit
hívás valamint, hogy ha kicseréljük a atexit
hívás egy egyszerű print()
, akkor a kilépés a szöveg, ahol a print()
minden történt, ahelyett, ahol a kód kijáratot.,
Program exited successfully!What"s your name?ExampleHi, Example !
Kecses exit
számos módja van, hogy kilépjen egy Python Program, amely nem jár dobott egy kivétel; az első volt, hogy megpróbálja quit()
használja a echo $?
bash parancsot, hogy megkapja a Python értelmező kilépési kódját.,
Úgy is meghatározhatjuk, hogy milyen típusú kódot a tolmács kell az exit által átadása quit()
egy egész vita kevesebb, mint 256
exit()
ugyanaz a funkciója, mint egy alias-t a quit()
, Sem quit()
, sem exit()
tartják jó gyakorlat, mivel mindkettő szükséges a site
modul, ami azt jelentette, hogy használható interaktív tolmácsok, nem pedig a programok., A programok, kellene valami, mint a sys.exit
Figyeljük meg, hogy mi kell külön behozatali egy modul hívás exit()
, ez úgy tűnhet, mint a nem javulás, de ez garantálja, hogy a szükséges modul be van töltve, mert nem jó az a feltételezés site
betöltődik futásidőben., Ha nem akarunk extra modulokat importálni, akkor megtehetjük, amit a exit()
, quit()
és sys.exit()
a színfalak mögött és raise SystemExit
kilépés hibaüzenetekkel
mi van, ha rossz bemenetet kapunk egy felhasználótól?, Nézzük meg újra a input.py
script, meg hozzá a képessége, hogy kezelni a rossz bemenet a felhasználó (CTRL+D
át egy EOF karakter)
A try
nyilatkozat azt mondja, Python, hogy próbálja meg a kódot be a nyilatkozatot, valamint, hogy adja át minden kivétel, hogy a except
nyilatkozatot, mielőtt kilépne.
kilépés hiba nélkül
mi van, ha a felhasználó hibát ad a programnak, de nem akarja, hogy a kód hibát nyomtasson, vagy valamilyen hibakezelést végezzen a felhasználói hatás minimalizálása érdekében?,
tehetünk hozzá egy finally
nyilatkozatot, amely lehetővé teszi számunkra, végre kód után a hiba kezelése catch
Értesítés a felhasználónak nem tudom, egy EOFError
történt, ezt fel lehet használni, hogy adja át az alapértelmezett értékek abban az esetben, ha a szegény bemeneti vagy érvek.,
Exit and release your resources
Általánosságban elmondható, hogy a Python automatikusan felszabadítja a programban hívott összes erőforrást, amikor kilép, de bizonyos folyamatoknál jó gyakorlat, hogy bizonyos korlátozott erőforrásokat egy with
blokkban kódol.
gyakran látni fogja ezt a open()
hívásokban, ahol a fájl megfelelő kiadásának elmulasztása problémákat okozhat a fájl későbbi olvasásával vagy írásával kapcsolatban.
a with
blokk automatikusan felszabadítja az összes szükséges erőforrást., Ha azt akartuk, hogy több, kifejezetten biztosítja a fájl zárva volt, használhatjuk a atexit.register()
paranccsal, hogy hívják close()
$ nano openfile.pyimport atexitfile=open("testfile.txt","w")file.write("let"s write some text!\n")atexit.register(file.close)
Ha a források nevezik használata nélkül egy with
blokk, győződjön meg róla, hogy kifejezetten kiadás őket egy atexit
parancs.
kilépés egy idő után
ha aggódunk, hogy programunk soha nem szűnik meg normálisan, akkor a Python multiprocessing
modulját használhatjuk annak biztosítására, hogy programunk megszűnik.,
figyeljük meg, hogy a folyamat nem sikerült befejezni, amikor a funkció azt mondták, hogy várjon 7 másodpercig, de befejeződött, és kinyomtatta, hogy mit kellett volna, amikor azt mondták, hogy várjon 0 másodpercet!
Kilépés segítségével bevallását
Ha van egy szakasz a kódot szeretnénk használni, hogy megszüntesse az egész programot, ahelyett, hogy a break
nyilatkozat továbbra is a kódot a cikluson kívül, használhatjuk a return sys.exit()
kilép a kód teljesen.,
kilépés egy függvény közepén
ha nem akarunk visszatérési nyilatkozatot használni, akkor továbbra is hívhatjuk a sys.exit()
programot, hogy bezárjuk a programot, és egy return
– t biztosítsunk egy másik ágban. Használjuk a kódunkat break.py megint.
Kilépés a feltételek teljesülése esetén
ha van egy hurok a Python kódunkban, és meg akarjuk győződni arról, hogy a kód kiléphet, ha probléma merül fel, használhatunk egy olyan zászlót, amelyet ellenőrizhet a program befejezéséhez.,
Kilépés a billentyűzeten
Ha egy gomb megnyomásáig szeretnénk nyitva tartani a programunkat a konzolon, használhatunk egy nem kötött input()
bezárásához.
$ nano holdopen.pyinput("Press enter to continue")$ python3 holdopen.pyPress enter to continue$
mi is át CTRL+C
a konzol, hogy Python a KeyboardInterrupt
karakter. Még a KeyboardInterrupt
kivételt is kezelhetjük, mint korábban a kivételeket.,
Kilépés többszálú program
Kilépés többszálú program valamivel több köze, mint egy egyszerű sys.exit()
hívják a szál, hogy csak a kilépés az aktuális szál., A “piszkos” módja, hogy használja a os._exit()
Mint látható, a program nem nyomtat, a többit a program, mielőtt kilépett, ezért os._exit()
jellemzően fenntartva utolsó menedék, majd a hívás vagy Thread.join()
a fő szál a preferált módszer a befejezés egy többszálú program.,
vége nélkül sys exit
Sys.exit()
csak egy a több módon tudjuk kilépni a Python programok, amit sys.exit()
nem raise SystemExit
, így ugyanolyan könnyen Használhatunk bármilyen beépített Python kivételt, vagy létrehozhatunk egy sajátot!
a os._exit()
segítségével elmondhatjuk a gazdarendszernek, hogy megöli a python folyamatot, bár ez nem teszi meg a atexit
razzia.,
Exit upon exception
Ha minden kivétel nélkül ki akarunk lépni, bármilyen kezelés nélkül, akkor a try-except
block to executeos._exit()
.
Exit and restart
végül megvizsgáljuk, hogy mit teszünk a Python elhagyásához és a program újraindításához, ami sok esetben hasznos.
remélem, hasznosnak találja a bemutatót. Gyere vissza.
köszönöm.,
a LikeGeeks alapítója. 2010 óta dolgozom Linux rendszergazdaként. Én vagyok a felelős a Linux szerverek karbantartásáért, biztonságáért és hibaelhárításáért világszerte több ügyfél számára. Szeretek shell és Python szkripteket írni, hogy automatizáljam a munkámat.