Hvordan du bruker python subprocess check_output -metoden?

Hvordan du bruker python subprocess check_output -metoden?
I denne artikkelen vil vi gi en kort introduksjon av Python -underprosesser og diskutere hvordan du bruker delprosess Check_output i Python. La oss starte med å vite hva en underprosess er i Python. Underprosess er en Python -modul som brukes til å kjøre nye koder ved å lage nye prosesser. Det lar brukeren opprette en ny applikasjon i det for tiden utførende Python -programmet. Når brukeren ønsker å utføre et eksternt program fra et C- eller C ++ -program eller et hvilket som helst eksternt program fra et Git -depot, kan Python -underprosessen slå sammen disse programmene. Dessuten kan brukeren også få input, output, exit -koder eller feilrør ved bruk av Python -underprosessen. To parametere i funksjonssamtalen sendes; Den første parameteren refererer til programmet som brukeren ønsker å initialisere, og det andre argumentet refererer til filargumentene.

Det er mange underprosessmoduler i Python, for eksempel underprosess.Run (), underprosess.Popen (), underprosess.ring (), underprosess.check_call (), underprosess.sjekk_output (), etc. Her skal vi opplyse hva som er underprosessen.check_output (), hva dens funksjon er, og hvordan den brukes i et python -program.

Syntaks av underprosess.CHECK_OUTPUT ()

Hvert Python -program har standardkanaler for prosessen eller underprosessen. Disse kanalene startes av Call () og bundet til inngangen og utgangen fra overordnede programmet. Med andre ord kan ikke kommandoen for output fra anropsprogrammet fanges opp. Derfor brukes Check_Output () underprosessmodulen i Python til å fange opp utgangen fra anropsprogrammet for senere behandling. Syntaks av underprosess.check_output () er som følger:

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

'Args' argumentet fra underprosessen.Check_output refererer til kommandoen som skal utføres. Flere kommandoer kan sendes til 'args' -argumentet som en streng; de må imidlertid skilles med en semikolon;.'Stdin -argumentet refererer til verdien av standard inngangsstrømmen som må sendes et rør. Stdout -argumentet refererer til verdien av utgangen som genereres fra standardutgangsstrømmen. STDERR -argumentet refererer til verdien av feil generert fra standardfeilstrømmen.

Skallargumentet refererer til den boolske parameteren, som bare utføres gjennom et nytt skallmiljø når det er sant. Det siste argumentet, Universal_Newlines er en annen boolsk parameter. Hvis argumentet Universal_newlines er sant, vil filen som inneholder stdout og stderr åpne i universal newline -modus. Utgangen eller avkastningen på underprosessen.check_output () er kommandokoden.

Her er et eksempel for å få deg til å forstå hvordan Check_Output () -modulen fanger ut output fra anropsprogrammet.

Eksempel 1:

Dette enkle eksemplet vil produsere kommandoenes utgangskode.

Importer underprosess
Calling_output = underprosess.check_output (['ls', '-l'])
print (calling_output)

Her er utgangen fra det gitte et eksempel:

Eksempel 2:

Dette eksemplet vil produsere utdataene fra anropsprogrammet.

Importer underprosess
trykk (underprosess.Check_output (["Echo", "ABC"]))

Her er utdataene fra ovennevnte kode:

Eksempel 3:

Dette eksemplet vil demonstrere hvordan eksterne programmer for ethvert programmeringsspråk som C, C ++, Java, etc., er integrert i et Python -program ved bruk av underprosess i Python og hvordan Check_Output () vil utføre utdataene fra disse eksterne programmene.

Dette er et C -program:

int main ()

printf ("print hello_world from c programmering språk");
retur 0;

Nedenfor er C ++ -programmet

#inkludere
ved hjelp av navneområdet STD;
int main ()

int a, b;
cin >> a;
Cin >> B;
cout << "Print Hello_World from C++ programing language and the Values are:" << a << " " << b;
retur 0;

Dette er Java -programmet

Klasse Helloworld

offentlig
statisk tomrom (streng args [])

System.ute.print ("print hello_world fra java programmeringsspråk");

Her er Python -programmet som utfører programmene ovenfor ved hjelp av underprosess i Python

Importer underprosess
Importer OS
def exc ():
A = underprosess.check_call ("gcc hello_world.c -o out1;./out1 ", shell = true)
print (", output", a)
def execpp ():
Data, temp = OS.rør()
OS.skriv (temp, byte ("5 10 \ n", "utf-8"));
OS.Lukk (temp)
S = underprosess.CHECK_OUTPUT ("G ++ Helloworld.cpp -o out2;./out2 ", stdin = data, shell = true)
trykk (s.Dekode ("UTF-8"))
def exejava ():
S = underprosess.Check_output ("Javac Helloworld.Java; Java HelloWorld ", Shell = True)
trykk (s.Dekode ("UTF-8"))
Hvis __navn __ == "__ Main__":
exec ()
Execpp ()
exejava ()

Her er utdataene fra ovennevnte program:

Merk: Selv om underprosessmodulen i Python er uavhengig, må disse kommandoene helst utføres i Linux -miljøet. Dessuten kan skallet = sant bli en sikkerhetsfare hvis en upålitelig inngang er kombinert, som definert i Python -dokumentasjon.

Konklusjon:

Denne artikkelen handler om underprosessen.Check_Output () Modulen til underprosessen i Python. Her har vi en kort diskusjon av underprosesser i Python og forklar deretter bruken av underprosessen.CHECK_OUTPUT (). La oss få en rask oversikt over artikkelen. Underprosessen i Python oppretter et nytt program for å kjøre en ny kode i den. Det lar brukeren opprette en ny applikasjon i det for tiden utførende Python -programmet. Det er mange moduler av underprogrammer i Python, og noen av dem er underprosess.ring (), underprosess.Popen (), underprosess.check_call (), underprosess.CHECK_OUTPUT ().

Underprosessen.check_output () brukes til å få produksjonen fra anropsprogrammet i Python. Den har 5 argumenter; Args, Stdin, Stderr, Shell, Universal_newlines. Args -argumentet holder kommandoene som skal sendes som en streng. Stdin, stdout og stderr gir henholdsvis inngangs-, utgangs- og feilverdien fra standardstrømmen. Shell og Universal_newlines er de boolske parametrene som bare utfører kommandoene når verdien av argumentet er sann. Returkoden til kommandoen er gitt som utgangen fra underprosessen.check_ouput () funksjon. En byte -streng returneres som utgang hvis koden er null; ellers blir kalt prosessror heves.