Exiting / Terminating Python scripts (Simple Examples)

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.

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *