tänään sukellamme aiheeseen exiting/terminating Python scripts! Ennen kuin aloitamme, sinun pitäisi olla perustiedot siitä, mitä Python on ja joitakin perustiedot sen käytöstä.
voit käyttää valitsemaasi IDE: tä, mutta käytän tällä kertaa Microsoftin Linux-osajärjestelmää Windows (WSL) – pakettiin. Lisätietoja siitä ja miten otat sen käyttöön Windows 10: ssä, siirry tästä.
Sisällysluettelo
Miksi Python poistu automaattisesti komentosarjan, kun se on tehty?,
tapa, Python suorittaa koodin lohko, tekee se suorittaa jokaisen rivin järjestyksessä, tarkistaa riippuvuudet, tuoda, lukeminen, määritelmät ja luokat tallentaa muistiin ja suorittamalla paloja koodi, jotta jolloin silmukoita ja soittaa takaisin määriteltyyn määritelmät ja luokat.
Kun Python-tulkki saavuttaa tiedoston loppua (EOF), se huomaa, että se ei voi lukea mitään muuta tietoa lähteestä, olipa käyttäjän syötteiden kautta IDE-tai lukea tiedostosta. Demonstroidakseen, yritetään saada käyttäjän syöte ja keskeyttää tulkki kesken suorittamisen!,
ensin Bash-päätteestäsi Powershellissa Avaa uusi tiedosto nimeltä ”input.,n liitä seuraava shell oikealla klikkaamalla PowerShell ikkuna
name=input("Don"t type anything!\n")print("Hi,",name,"!")
Nyt, paina CTRL+X
tallenna ja poistu nano-ikkuna ja shell tyyppi:
$ python3 input.pyDon"t type anything!
Ja paina CTRL+D
lopettaa ohjelman, kun se odottaa käyttäjän syötettä,
Traceback (most recent call last):File "input.py", line 1, in name=input("Don"t type anything!")EOFError
EOFError
poikkeus kertoo, että Python-tulkki osui tiedoston loppua (EOF) kunto ennen kuin se on valmis suorittamalla koodin, kun käyttäjä kirjoittaa mitään lähtötietoja.,
Kun Python saavuttaa EOF kunto samalla, että se on toteuttanut kaikki koodi ilman heitto mitään poikkeuksia lukuun ottamatta, joka on yksi tapa Python voi poistua ”sulavasti.”
Tunnista script poistu
Jos haluamme kertoa, kun Python ohjelma poistuu ilman heittää poikkeus, voimme käyttää sisäänrakennettu Python atexit
moduuli.
atexit
kahvat mitään haluamme, että ohjelma tehdä, kun se poistuu ja on tyypillisesti käytetään tekemään program siivota, ennen kuin ohjelma prosessi päättyy
kokeilla atexit, katsotaanpa muokata meidän tulo.,py esimerkki tulostaa viestin ohjelman exit. Avaa input.py tiedosto uudelleen ja korvata tekstiä tähän
import atexitatexit.register(print,"Program exited successfully!")name=input("What"s your name?\n")print("Hi,",name,"!")
Kirjoita nimesi, ja kun osut enter-sinun pitäisi saada:
What"s your name?ExampleHi, Example !Program exited successfully!
Huomaa, miten poistu teksti näkyy lopussa lähtö ei ole väliä missä meidän paikka atexit
soita, ja miten, jos me korvata atexit
soita yksinkertainen print()
saamme poistu teksti, jossa print()
kaikki oli tehty, eikä sinne koodi poistuu.,
Program exited successfully!What"s your name?ExampleHi, Example !
Siro exit
On olemassa useita tapoja poistua Python-Ohjelma, joka ei liity heittää poikkeus; ensimmäinen oli yrittää on quit()
Voit käyttää bash-komento echo $?
päästä exit-koodi Python-tulkki.,
Voimme myös määritellä tyyppi koodi tulkki pitäisi poistua kanssa jakamalla quit()
kokonaisluku argumentti vähemmän kuin 256
exit()
on samat toiminnot kuin se on alias quit()
Kumpikaan quit()
eikä exit()
pidetään hyvä käytäntö, koska ne molemmat vaativat site
moduuli, joka on tarkoitus käyttää interaktiivinen tulkkeja ja ohjelmia., Meidän ohjelmia, meidän pitäisi käyttää jotain sys.exit
Huomaa, että meidän täytyy selkeästi tuoda moduuli soittaa exit()
tämä saattaa tuntua se ei ole parannusta, mutta se takaa, että tarvittava moduuli on ladattu, koska se ei ole hyvä oletus site
ladataan suorituksen., Jos emme halua tuoda ylimääräisiä moduulit, voimme tehdä mitä exit()
, quit()
ja sys.exit()
tekevät kulissien takana ja raise SystemExit
Poistu virheilmoitukset
Mitä jos saamme huonoa palautetta käyttäjä?, Katsotaanpa takaisin meidän input.py
käsikirjoitus, ja lisää kyky käsitellä pahaa käyttäjän syötettä (CTRL+D
ohi on EOF-merkki)
try
selvitys kertoo Python kokeilla koodin sisällä julkilausuman ja siirtää mitään poikkeus except
ilmoitus ennen poistumista.
Poistuminen ilman virhe
Mitä jos käyttäjä kädet ohjelman virheen, mutta et halua koodi tulostaa virheen, tai tehdä jonkinlainen virhe käsittely minimoi käyttäjän vaikutus?,
– Emme voi lisätä finally
lausunto jonka avulla voimme suorittaa koodia, kun teemme virheen käsittely catch
Huomaa, että käyttäjä ei koskaan tiedä, on, että EOFError
tapahtui, tämä voidaan ohittaa oletusarvot, jos huono syöttö tai perusteluja.,
Poistu ja vapauttaa resursseja
Yleensä, Python vapauttaa kaikki resurssit, että olet kutsunut ohjelman automaattisesti, kun se poistuu, mutta tiettyjä prosesseja, se on hyvä käytäntö liittää joitakin rajallisia luonnonvaroja with
lohko.
Usein voit nähdä tämän open()
puhelut, joissa ei oikein vapauta tiedosto voi aiheuttaa ongelmia lukemisen tai kirjoittamisen tiedoston myöhemmin.
with
lohko automaattisesti vapauttaa kaikki resurssit, vaadittu sen sisällä., Jos me halusi selvästi varmistaa, että tiedosto on suljettu, voimme käyttää atexit.register()
komento soittaa close()
$ nano openfile.pyimport atexitfile=open("testfile.txt","w")file.write("let"s write some text!\n")atexit.register(file.close)
Jos resursseja kutsutaan ilman with
lohko, varmista, että nimenomaisesti vapauta niitä atexit
komento.
Poistumisen jälkeen aika
Jos olemme huolissamme, meidän ohjelma voi koskaan lopettaa normaalisti, sitten voimme käyttää Pythonin multiprocessing
moduuli on sitoutunut varmistamaan, että ohjelma päättyy.,
Huomaa, miten prosessi, ei valmis, kun toiminto kerrottiin odota 7 sekuntia, mutta valmis ja painettu, mitä se piti, kun käskettiin odottaa 0 sekuntia!
Poistuminen käyttäen return-lausetta
Jos meillä on osa-koodin, jolla haluamme lopettaa koko ohjelman, sen sijaan, että kerroit break
selvitys jatkaa koodin ulkopuolella silmukka, voimme käyttää return sys.exit()
poistu koodi kokonaan.,
Poistu keskellä toiminto
Jos emme halua käyttää return-lauseen, voimme silti soittaa sys.exit()
sulje ohjelma ja tarjota return
toinen haara. Käytetään meidän koodi alkaen break.py uudestaan.
Poistu, kun edellytykset täyttyvät
Jos meillä on silmukka meidän Python-koodin ja haluamme varmistaa, että koodi voi poistua, jos se havaitsee ongelman, voimme käyttää lippu, että se voi tarkistaa lopettaa ohjelman.,
Exit näppäimen painallus
Jos haluamme säilyttää meidän ohjelma avaa konsoli, kunnes me paina näppäintä, voimme käyttää sitoutumattoman input()
sulje se.
$ nano holdopen.pyinput("Press enter to continue")$ python3 holdopen.pyPress enter to continue$
Voimme myös siirtää CTRL+C
konsoli antaa Python KeyboardInterrupt
hahmo. Voimme jopa käsitellä KeyboardInterrupt
poikkeusta, kuten olemme käsitelleet poikkeuksia ennenkin.,
Poistu monisäikeinen ohjelma
Poistuminen monisäikeinen ohjelma on hieman enemmän mukana, niin yksinkertainen sys.exit()
kutsutaan päässä lanka, joka on vain poistua nykyisen säikeen., ”Likainen” tapa tehdä se on käyttää os._exit()
Kuten näette, ohjelma ei tulosta loput ohjelma, ennen kuin se poistui, tämä on miksi os._exit()
on tavallisesti varattu viimeisenä keinona, ja soittamalla joko Thread.join()
main thread on ensisijainen menetelmä päättyy monisäikeinen ohjelma.,
Loppuun ilman sys poistu
Sys.exit()
on vain yksi monista tavoista, joilla voimme poistua meidän Python-ohjelmia, mitä sys.exit()
ei raise SystemExit
, joten voimme aivan yhtä helposti käyttää mitä tahansa sisäänrakennettu Python poikkeus tai luoda omia!
Voimme myös käyttää os._exit()
kertoa host-järjestelmä tappaa python prosessi, vaikka tämä ei tee atexit
uudelleenjärjestäminen.,
Poistu kun poikkeus
Jos haluamme poistua tahansa poikkeus, ilman mitään käsittelyä, me voimme käyttää try-except
lohko, joka suoritetaan, os._exit()
.
Exit ja restart
Lopuksi, me tutkia, mitä me teemme poistua Python ja käynnistä ohjelma, joka on hyödyllinen monissa tapauksissa.
toivottavasti opetusohjelma on hyödyllinen. Tule takaisin.
Kiitos.,
Perustaja LikeGeeks. Olen työskennellyt Linux-järjestelmänvalvojana vuodesta 2010. Olen vastuussa Linux-palvelimien ylläpidosta, varmistamisesta ja vianmäärityksestä useille asiakkaille ympäri maailmaa. Rakastan kirjoittaa shell ja Python skriptejä automatisoida työni.