Hvordan få returkode fra prosess i Python underprosessutførelse?

Hvordan få returkode fra prosess i Python underprosessutførelse?

Som Python -utvikler kan det være lurt å få en prosesss returkode av flere grunner. For eksempel, mens håndteringsfeil, er det viktig å vite om en underprosess ble utført eller utløste noen feil med hell. Videre kan den returnerte koden også brukes til å spore programmet eller utførelsen av underprosesser.

Denne bloggen vil dekke:

  • Metode 1: Få returkode fra prosess i Python ved å bruke "returkode" attributt
  • Metode 2: Få returkode fra prosess i Python ved å bruke "kommunisere ()" -metode
  • Metode 3: Få returkode fra prosess i Python ved å bruke "check_output ()" -metoden

Metode 1: Få returkode fra prosess i Python ved å bruke "returkode" attributt

I Python tilhører "ReturnCode" -attributtet "underprosessen" -modulen. Denne attributtet inneholder en heltallverdi som refererer til utgangsstatus for en underprosess ved utførelse. Mer spesifikt betyr verdien “0” den vellykkede utførelsen av underprosessen, mens en ikke-null verdi indikerer en unormal tilstand eller en feil.

Syntaks

prosess.ReturnCode

Her, “prosess”Representerer prosessobjektets relevante funksjon av“underprosess”Modul, og“ReturnCode”Er den tilsvarende returkodeverdien.

Eksempel

Å bruke “ReturnCode”Attributt for å hente returkoden i Python underprosessutførelse, sjekk ut den medfølgende koden:

fra importkjøring av underprosesser
prosess = kjør (['ekko', 'linuxhint -bruker!'])
Skriv ut ('Returkode:', prosess.returkode)

I henhold til den gitte koden:

  • Først av alt, importer "løpe()”Funksjonen til“underprosess”Modul.
  • løpe()”Funksjonen kjører“ekko”Kommando og venter på at den skal fullføre, og til slutt returnerer prosessobjektet.
  • Til slutt "skrive ut()”Funksjon viser“ReturnCode”Attributtverdi for det hentede objektet:

Her, “0”Er blitt returnert, noe som indikerer at den spesifiserte underprosessen er utført med hell.

Metode 2: Få returkode fra prosess i Python ved å bruke "kommunisere ()" -metode

kommunisere()”Metode i Python tillater samspillet med en prosess ved å gi innspill til den. Denne metoden sender ut en tuple som omfatter “std_out”(Standardutgang) ved 0th -indeksen og“stderr_data”(Feilstrøm eller meldinger) på 1. indeks. Verdiene for disse tilknyttede variablene vil bli returnert som “Ingen”Hvis standardutgangen eller feilmeldingene ikke er fanget.

Syntaks

prosess.Kommuniser (input = ingen, timeout = ingen) [n]

I den gitte syntaksen, “inngang”Er en byte -streng som sendes til prosessens standardinngang,”pause”Er antall sekunder å vente på prosessen med prosessen, og“n”Refererer til indeks, hvor“0”Gir standardutgangen, og“1”Angir feilstrømmene.

Eksempel

Utfør nå følgende Python -kode for å få returkoden ved hjelp av Communicate () -metoden:

Importer underprosess
prosess = underprosess.Popen (["Echo", "Linuxhint -bruker!"], stdout = underprosess.RØR)
trykk (prosess.kommunisere () [0])

Her:

  • For det første importerer du "underprosess”Modul.
  • Det er "Popen ()”Metode genererer et popen -objekt som representerer den nyopprettede underprosessen og returnerer den.
  • Det første argumentet fra popen () refererer til kommandoen som må utføres, og verdien av “stdout”Er satt som“underprosess.RØR”For å fange underprosessutgangen.
  • Endelig "prosess.kommunisere () [0]”Returnerer standardutgangen til underprosessen:

I vårt tilfelle "B'linuxhint -bruker!\ n '”Har blitt vist som den returnerte koden.

Metode 3: Få returkode fra prosess i Python ved å bruke "check_output ()" -metoden

CHECK_OUTPUT ()”Python -metoden kjører en kommando som en underprosess og lagrer utgangen. Denne metoden presenterer utgangen som en byte -objekt.

Syntaks

underprosess.Check_output (args, *, stdin = ingen, stderr = ingen, skall = falsk, universal_newlines = falsk, timeout = ingen, koding = ingen, feil = ingen)

Her, “Args”Begynner kommandoene som må utføres, mens alle de andre parametrene er valgfrie.

Eksempel

Vi har passert “ekko”Kommando og den respektive strengen til Check_output () som et argument. Resultatet at denne metoden vil returnere den fangede utgangen:

prosess = underprosess.Check_output (["Echo", "Hei fra Linuxhint!"])
trykk (prosess)

Produksjon

Bonustips: Avkode standardutgangen

Python tilbyr også anlegget for å avkode den returnerte standardutgangen med "dekode()”Metode. I denne koden vil vi avkode bytestrengen som bruker "UTF-8”Kodingsskjema:

trykk (prosess.Dekode ("UTF-8"))

Produksjon

Det handlet om å få returkoden i Python.

Konklusjon

For å få returkoden fra en prosess i Python underprosessutførelse, bruk "returncode ”attributt,“ kommunisere () ”, eller“ check_output ()”Metode. “ReturnCode”Attributt returnerer”0”Ved vellykket utførelse, og“kommunisere () [0]”Utgir standardutgangen som er lagret ved nullindeksen. Dessuten "CHECK_OUTPUT ()”Metoden fungerer også den samme. Denne bloggen dekket flere metoder for å få returkode i Python.