Podproces.Metoda uruchamiania
Podproces.Metoda uruchamiania ma listę argumentów. Po wywołaniu metody wykonuje polecenie i czeka na zakończenie procesu, zwracając na końcu obiekt „Completed Process”. Obiekt „CompletedProcess” zwraca stdout, stdderr, oryginalne argumenty używane podczas wywoływania metody oraz kod powrotu. Stdout odnosi się do strumienia danych wyprodukowanych przez polecenie, podczas gdy STDDERR odnosi się do wszelkich błędów podniesionych podczas wykonywania programu. Każdy niezerowy kod zwrotny (kod wyjściowy) oznaczałby błąd z poleceniem wykonanym w podproces.Metoda uruchamiania.
Przykład 1: Wyjście zawartość pliku tekstowego za pomocą podproces.Metoda uruchamiania
Poniższe polecenie wyświetli zawartość „danych.plik txt ”, zakładając, że zawiera ciąg„ name = John ”.
importować podprocesUruchomienie powyższego kodu zwróci następujące dane wyjściowe:
Nazwa = JohnPierwszym elementem argumentu listy jest nazwa polecenia, które ma zostać wykonane. Każdy element na liście, który następuje Pierwszy element, są uważane za opcje lub przełączniki wiersza poleceń. Możesz również użyć pojedynczej descy rozdzielczej i podwójnej atrakcji, aby zdefiniować opcje. Na przykład, aby wymienić pliki i foldery w katalogu, kod byłby „podproces.Run ([„LS”, „-l”] ”. W większości tych przypadków możesz rozważyć dowolny argument oddzielony przestrzenią w poleceniu powłoki jako indywidualny element na liście dostarczonej do podproces.Metoda uruchamiania.
Przykład 2: Stłumij wyjście podproces.Metoda uruchamiania
Aby stłumić wyjście podproces.Metoda uruchomienia, będziesz musiał dostarczyć „stdout = podproces.DevNull ”i„ Stderr = podproces.DevNull ”jako dodatkowe argumenty.
importować podprocesUruchomienie powyższego kodu wytworzy następujące dane wyjściowe:
CompleteDProcess (args = [„cat”, „dane.txt '], returnCode = 0)Przykład 3: Wyjście przechwytywania podproces.Metoda uruchamiania
Aby uchwycić wyjście podproces.Metoda Uruchom, użyj dodatkowego argumentu o nazwie „Capture_output = True”.
importować podprocesUruchomienie powyższego kodu wytworzy następujące dane wyjściowe:
CompleteDProcess (args = [„cat”, „dane.txt '], returnCode = 0,Możesz indywidualnie uzyskać dostęp do wartości STDOUT i STDERR, używając „wyjściowego.stdout ”i„ wyjście.metody stderr ”. Wyjście jest wytwarzane jako sekwencja bajtów. Aby uzyskać ciąg jako wyjście, użyj „wyjściowego.Stdout.Metoda dekodowania („UTF-8”) ”. Możesz także dostarczyć „text = true” jako dodatkowy argument dla podproces.Uruchom wywołanie, aby uzyskać wyjście w formacie ciągów. Aby uzyskać kod stanu wyjścia, możesz użyć „wyjścia.Metoda returncode ”.
Przykład 4: Podnieś wyjątek dotyczący niepowodzenia polecenia wykonanego przez podproces.Metoda uruchamiania
Aby podnieść wyjątek, gdy polecenie wychodzi ze statusem niezerowym, użyj argumentu „Check = True”.
importować podprocesUruchomienie powyższego kodu wytworzy następujące dane wyjściowe:
Podnieś o nazwieProcessError (kod retcode, proces.Args,Przykład 5: Przekaż ciąg do polecenia wykonanego przez podproces.Metoda uruchamiania
Możesz przekazać ciąg do polecenia, który ma zostać wykonany przez podproces.Metoda uruchom za pomocą argumentu „input = 'string'”.
importować podprocesUruchomienie powyższego kodu wytworzy następujące dane wyjściowe:
CompleteDProcess (args = ['cat'], returnCode = 0, stdout = 'Dane.txt ', stderr = ")Jak widać, powyższy kod przekazuje „dane.txt ”jako ciąg, a nie jako obiekt pliku. Przekazać „Dane.txt ”Jako plik użyj argumentu„ stdin ”.
z otwartymi („Dane.txt ") jako f:Uruchomienie powyższego kodu wytworzy następujące dane wyjściowe:
CompleteDProcess (args = ['cat'], returnCode = 0, stdout = 'name = John \ n', stderr = ")Przykład 6: Wykonaj polecenie bezpośrednio w Shell za pomocą podproces.Metoda uruchamiania
Możliwe jest uruchomienie polecenia bezpośrednio w powładzie „tak, jak jest” zamiast używać ciągu podzielonego w poleceniu głównym i opcjach, które go przestrzegają. Aby to zrobić, musisz przekazać „powłok = true” jako dodatkowy argument. Jest to jednak zniechęcone przez programistów Pythona, ponieważ użycie „shell = true” może prowadzić do problemów bezpieczeństwa. Możesz przeczytać więcej o implikacjach bezpieczeństwa stąd.
importować podprocesUruchomienie powyższego kodu wytworzy następujące dane wyjściowe:
Nazwa = JohnWniosek
Podproces.Metoda biegu w Pythonie jest dość mocna, ponieważ pozwala uruchamiać polecenia powłoki w samym Pythonie. Pomaga to w ograniczeniu całego kodu do samego Pythona bez potrzeby posiadania dodatkowego kodu skryptu w osobnych plikach. Może być jednak dość trudne, aby poprawnie tokenizować polecenia powłoki na liście Python. Możesz użyć „Shlex.split () ”metoda tokenizacji prostych poleceń powłoki, ale w długich, złożonych poleceniach - szczególnie tych z symbolami rur - Shlex nie jest prawidłowo podzielony polecenie. W takich przypadkach debugowanie może być trudnym problemem. Możesz użyć argumentu „shell = true”, aby tego uniknąć, ale istnieją pewne obawy dotyczące bezpieczeństwa związane z tym działaniem.