Jak używać metody Subprocess Python Subprocess?

Jak używać metody Subprocess Python Subprocess?
W tym artykule przedstawimy krótkie wprowadzenie podprocesów w Python i omówimy, jak korzystać. Zacznijmy od świadomości, czym jest podproces w Pythonie. Subprocess to moduł Python, który służy do uruchamiania nowych kodów poprzez tworzenie nowych procesów. Pozwala użytkownikowi utworzyć nową aplikację w ramach aktualnie wykonującego programu Python. Gdy użytkownik chce wykonać program zewnętrzny z programu C lub C ++ lub dowolnego programu zewnętrznego z repozytorium GIT, podproces Python może scalić te programy. Ponadto użytkownik może również uzyskać rurki wejściowe, wyjściowe, wyjścia lub rur błędów za pomocą podproces Python. Przekazano dwa parametry w wywołaniu funkcji; Pierwszy parametr odnosi się do programu, który użytkownik chce zainicjować, a drugi argument odnosi się do argumentów plików.

Istnieje wiele modułów podprocesowych w Pythonie, na przykład podproces.run (), podproces.Popen (), podproces.call (), podproces.Check_Call (), podproces.check_output () itp. Tutaj zamierzamy oświecić, czym jest podproces.check_output (), jaka jest jego funkcja i jak jest używany w programie Python.

Składnia podprocesów.check_output ()

Każdy program Python ma standardowe kanały dla procesu lub podproces. Kanały te są uruchamiane przez Call () i związane z wejściem i wyjściem programu nadrzędnego. Innymi słowy, nie można uchwycić polecenia wyjścia programu wywołującego. Stąd moduł podprocesowy (. Składnia podprocesów.Check_output () jest następujący:

podproces.check_output (args, *, stdin = brak, stderr = brak, powłoka = false, universal_newlines = false)

Argument „args” podproces.Check_output odnosi się do polecenia, które ma zostać wykonane. Wiele poleceń można przekazać argumentowi „args” jako ciąg; Muszą być jednak oddzielone półkolisem;.„Argument stdin odnosi się do wartości standardowego strumienia wejściowego, który należy przekazać rury. Argument StDout odnosi się do wartości wyjściowej wygenerowanej ze standardowego strumienia wyjściowego. Argument STDDERR odnosi się do wartości błędu wygenerowanego ze standardowego strumienia błędów.

Argument powłoki odnosi się do parametru logicznego, który jest wykonywany przez nowe środowisko powłoki tylko wtedy, gdy jest to prawdą. Ostatni argument, Universal_Newlines to kolejny parametr logiczny. Jeśli argument Universal_Newlines jest prawdziwy, plik zawierający stdout i STDDERR otworzy się w trybie Universal Newline. Wyjście lub zwrot podproces.check_output () to kod polecenia.

Oto przykład, abyś zrozumiał, w jaki sposób moduł Check_Output () przechwytuje dane wyjściowe programu wywołującego.

Przykład 1:

Ten prosty przykład wytworzy kod wyjściowy polecenia.

importować podproces
Calling_output = podproces.check_output ([„ls”, '-l'])
drukuj (calling_output)

Oto wyjście podanego przykładu:

Przykład 2:

Ten przykład wytworzy dane wyjściowe programu wywołującego.

importować podproces
Drukuj (podproces.check_output ([„echo”, „ABC”])))

Oto dane wyjściowe powyższego kodu:

Przykład 3:

Ten przykład pokaże, w jaki sposób zewnętrzne programy każdego języka programowania, takie jak C, C ++, Java itp., są włączone do programu Python przy użyciu podprocesów w Python i w jaki sposób Check_output () wykonuje dane wyjściowe tych programów zewnętrznych.

To jest program C:

int main ()

printf („print hello_world z języka programowania C”);
powrót 0;

Poniżej znajduje się program C ++

#włączać
za pomocą przestrzeni nazw Std;
int main ()

int a, b;
cin >> a;
cin >> b;
Cout << "Print Hello_World from C++ programing language and the Values are:" << a << " " << b;
powrót 0;

To jest program Java

klasa Helloworld

publiczny
statyczna pustka główna (String Args [])

System.na zewnątrz.print („drukuj hello_world z języka programowania Java”);

Oto program Python, który wykonuje powyższe programy za pomocą podprocesów w Python

importować podproces
Import OS
def exec ():
A = podproces.Check_Call ("GCC Hello_World.c -o out1;./out1 ", powłoka = true)
print („, wyjście”, a)
def execpp ():
dane, temp = OS.rura()
OS.Write (temp, bajty („5 10 \ n”, „utf-8”));
OS.Zamknij (temp)
S = podproces.Check_output („G ++ Helloworld.cpp -o out2;./out2 ", stdin = dane, powłoka = true)
Drukuj (s.dekoduj („UTF-8”))
def exejava ():
S = podproces.Check_output („Javac Helloworld.java; java helloworld ", shell = true)
Drukuj (s.dekoduj („UTF-8”))
Jeśli __name __ == "__ main__":
exec ()
execpp ()
exejava ()

Oto dane wyjściowe powyższego programu:

Notatka: Mimo że moduł podprocesowy w Python jest niezależny. Ponadto powłoka = true może stać się zagrożeniem bezpieczeństwa, jeśli niezaufane dane wejściowe jest połączone, zgodnie z definicją w dokumentacji Pythona.

Wniosek:

Ten artykuł dotyczy podproces.moduł check_output () podproces w Python. Tutaj prowadzimy krótką dyskusję na temat podprocesów w Pythonie, a następnie wyjaśniają użycie podproces.check_output (). Miejmy szybkie podsumowanie artykułu. Podproces w Pythonie tworzy nowy program do uruchomienia nowego kodu. Pozwala użytkownikowi utworzyć nową aplikację w ramach aktualnie wykonującego programu Python. Istnieje wiele modułów podprogramów w Pythonie, a niektóre z nich są podprocesami.call (), podproces.Popen (), podproces.Check_Call (), podproces.check_output ().

Podproces.Check_output () służy do uzyskania wyjścia programu wywołującego w Python. Ma 5 argumentów; args, stdin, stdderr, shell, universal_newlines. Argument Args zawiera polecenia, które mają być przekazane jako ciąg. Stdin, StDout i STDDERR zapewniają odpowiednio wartość wejściową, wyjściową i błędu ze standardowego strumienia. Shell i Universal_Newlines to parametry logiczne, które wykonują polecenia tylko wtedy, gdy wartość argumentu jest prawdziwa. Kod powrotu polecenia jest podawany jako wyjście podproces.Funkcja Check_Ouput (). Ciąg bajtów jest zwracany jako wyjście, jeśli kod wynosi zero; W przeciwnym razie, zwany ProcesSerror, jest hodowany.