Spennende/Opphør av Python-skript (Enkle Eksempler)

i Dag, vil vi dykker ned i temaet spennende/opphør av Python-skript! Før vi kommer i gang, bør du ha en grunnleggende forståelse av hva Python er og litt grunnleggende kunnskap om sin bruker.

Du kan bruke IDE av ditt valg, men jeg vil bruke Microsofts Linux Subsystem for Windows (WSL) – pakken denne gangen. For mer informasjon om dette og hvordan du kan aktivere den på Windows-10, gå hit.

Innholdsfortegnelse

Hvorfor gjør Python automatisk ut et manus når det er ferdig?,

Den måten Python utfører en kode blokk gjør det utføre hver linje i orden, kontroll avhengigheter til å importere, lesing definisjoner og klasser som skal lagres i minnet, og utfører deler av koden for å tillate for eyelets og ringer tilbake til den definerte definisjoner og klasser.

Når Python-emulering når slutten av filen (EOF), det påvises at det ikke kan lese mer data fra kilde, enten det være brukerens input gjennom en IDE eller lese fra en fil. For å demonstrere, la oss prøve å få brukerundersøkelser og avbryter tolk i midten av gjennomføring!,

Første, fra bash-terminal i PowerShell åpne en ny fil som heter «input.,n lim inn følgende i dekselet ved å høyre-klikke på PowerShell vinduet

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

Nå, trykk på CTRL+X for å lagre innstillingene og avslutte nano-vinduet, og i skallet, skriv:

$ python3 input.pyDon"t type anything!

Og trykk på CTRL+D for å avslutte programmet mens den venter på inndata

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

EOFError unntak forteller oss at Python interpreter hit slutten av filen (EOF) tilstand før den er ferdig, utfører den koden som brukeren inn input-data.,

Når Python når EOF tilstand på samme tid som det har utført all koden uten å kaste noen unntak, som er en måte Python kan avslutte «grasiøst.»

Oppdage script exit

Hvis vi ønsker å fortelle når et Python-program kommer ut uten å kaste et unntak, kan vi bruke den innebygde Python atexit modulen.

atexit håndtak noe vi ønsker at programmet skal gjøre når de kommer ut, og er vanligvis brukt til å gjøre programmet rydde opp før programmet prosessen avslutter

for Å eksperimentere med atexit, la oss endre våre innspill.,py eksempel å skrive en melding på programmet avslutte. Åpne input.py filen på nytt, og bytt ut teksten med dette

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

Skriv inn navnet ditt, og når du trykker på enter bør du få:

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

legg Merke til hvordan avslutte teksten vises på slutten av utgang uansett hvor vi plasserer atexit anrop, og hvordan hvis vi erstatte atexit anrop med en enkel print(), får vi avslutte tekst der print() alle var gjort, snarere enn hvor koden kommer ut.,

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

Grasiøs exit

Det er flere måter å avslutte et Python-Program som ikke involverer å kaste et unntak; den første var kommer til å prøve er quit()

Du kan bruke bash-kommandoen echo $? for å få exit-kode i Python-tolkeren.,

Vi kan også definere type kode tolken bør avslutt med ved innlevering quit() et heltall argument mindre enn 256

exit() har samme funksjonalitet som det er et alias for quit()

Hverken quit() eller exit() er ansett som god praksis, som de både krever site modulen, som er ment å bli brukt til interaktive tolker og ikke i programmer., For programmene våre, bør vi bruke noe som sys.exit

legg Merke til at vi eksplisitt trenger å importere en modul for å ringe exit() dette kan virke som det er ikke en forbedring, men det garanterer at det er nødvendig modulen er lastet fordi det ikke er en god forutsetning site vil bli lagt ved kjøring., Hvis vi ikke ønsker å importere ekstra moduler, kan vi gjøre det exit(), quit() og sys.exit() gjør bak kulissene og raise SystemExit

Avslutt med feilmeldinger

Hva hvis vi får dårlig input fra en bruker?, La oss se tilbake på vår input.py skript, og legger til evnen til å håndtere dårlig input fra brukeren (CTRL+D for å passere en EOF tegn)

try uttalelse forteller Python til å prøve koden inne i erklæringen og for å passere noen unntak til except uttalelse før du avslutter.

Avslutte uten feil

Hva hvis brukeren hender programmet en feil, men du ikke vil at din kode for å skrive ut en feilmelding, eller for å gjøre noen form for håndtering av feil til brukeren minimere påvirkning?,

Vi kan legge til en finally uttalelse som lar oss kjøre kode etter vi gjør våre håndtering av feil i catch

legg Merke til at brukeren ville aldri vite at en EOFError oppstått, dette kan brukes til å passere standard verdier i tilfelle av dårlig inngang eller argumenter.,

Avslutt og frigjøre ressurser

Vanligvis, Python-frigjør alle de ressursene du har ringt til, i programmet automatisk når den kommer ut, men for visse prosesser, det er god praksis å encase noen begrensede ressurser i en with blokker.

Ofte vil du se dette i open() anrop, hvor unnlate å riktig slipp filen kan føre til problemer med å lese og skrive til filen senere.

with blokker automatisk utgivelser alle ressurser som er rekvirert innen it., Hvis vi ønsket å mer eksplisitt å sikre at filen var lukket, kunne vi bruke atexit.register() kommando for å ringe close()

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

Hvis ressursene er kalt uten å bruke en with blokker, sørg for å eksplisitt slipp dem i en atexit – kommandoen.

Avslutt etter en tid

Hvis vi er bekymret for våre program kan aldri si opp normalt, så vi kan bruke Python ‘ s multiprocessing modulen for å sikre våre program vil opphøre.,

legg Merke til hvordan prosessen klarte ikke å fullføre når funksjonen ble bedt om å vente i 7 sekunder, men fullførte og skrives ut hva det var ment til når det ble fortalt å vente 0 sekunder!

Avslutte med en return-setningen

Hvis vi har en del av koden vi vil bruke til å avslutte hele programmet, i stedet for å la break uttalelse fortsette kode utenfor løkken, kan vi bruke return sys.exit() for å avslutte koden fullstendig.,

ut i midten av en funksjon

Hvis vi ikke ønsker å bruke en return-setning, kan vi fremdeles ringe det sys.exit() for å lukke programmet vårt og gi en return i en annen gren. La oss bruke vår kode fra break.py igjen.

Avslutt når vilkårene er oppfylt

Hvis vi har en løkke i vår Python-kode, og vi ønsker å sørge for at koden kan gå ut dersom det møter et problem, kan vi bruke et flagg som det kan passe å avslutte programmet.,

Avslutt på tastetrykk

Hvis vi ønsker å holde våre program skal åpnes i konsollen til vi trykker på en tast, kan vi bruke en ubundet input() for å lukke det.

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

Vi kan også formidle CTRL+C til konsollen for å gi Python en KeyboardInterrupt karakter. Vi kan også håndtere KeyboardInterrupt unntak som vi har håndtert unntak fra før.,

Avslutt for en multithreaded program

gå ut av en multithreaded programmet er litt mer involvert, og som en enkel sys.exit() kalles fra tråden som bare vil avslutte den aktuelle tråden., Den «skitne» måten å gjøre det på er å bruke os._exit()

Som du kan se, programmet ikke skrive ut resten av programmet før det går ut, dette er grunnen til os._exit() er vanligvis reservert for en siste utvei, og telefoni enten Thread.join() fra main-tråden er den foretrukne metoden for å få slutt på en multithreaded programmet.,

Ender uten sys exit

Sys.exit() er bare en av flere måter vi kan avslutte vår Python-programmer, hva sys.exit() ikke raise SystemExit, så vi kan like gjerne bruke noen innebygde Python unntak eller opprett en av våre egne!

Vi kan også bruke os._exit() for å fortelle vert system for å drepe python prosessen, selv om dette ikke gjør atexit opprydding.,

Avslutt ved unntak

Hvis vi ønsker å avslutte på noen unntak uten noen håndtering, kan vi bruke vår try-except blokker for å utføre. os._exit().

Avslutt, og start

til Slutt, vil vi utforske hva vi gjør for å avslutte Python og starte programmet på nytt, noe som er nyttig i mange tilfeller.

jeg håper du finner opplæringen nyttig. Kommer tilbake.

Takk skal du ha.,

Grunnlegger av LikeGeeks. Jeg jobber som et Linux-system administrator siden 2010. Jeg er ansvarlig for å vedlikeholde, sikre, og feilsøking av Linux-servere for flere kunder over hele verden. Jeg elsker å skrive skall og Python-skript for å automatisere arbeidet mitt.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *