Jak odzyskać kod wyjścia, korzystając z subprocess
modułu i communicate()
metody Pythona ?
Odpowiedni kod:
import subprocess as sp
data = sp.Popen(openRTSP + opts.split(), stdout=sp.PIPE).communicate()[0]
Czy powinienem to robić w inny sposób?
python
subprocess
CarpeNoctem
źródło
źródło
from subprocess import Popen
a następnie po prostu użyjPopen
zamiast tego,subprocess(or sp).Popen
co powiedziałbym, prawdopodobnie zwiększa czytelność i skraca wierszeprocess.communicate()
a następnie przypisaćreturncode
do jakiejś zmiennej. Jeśli przypisanie zostało wykonane przed wywołaniemcommunicate
, jestNone
.Najpierw upewnij się, że proces został zakończony, a kod powrotu został odczytany przy użyciu tej
.wait
metody. To zwróci kod. Jeśli chcesz uzyskać do niego dostęp później, jest on przechowywany jak.returncode
wPopen
obiekcie.źródło
.communicate()
już czeka na zakończenie podprocesu..poll()
zaktualizuje kod powrotu.Próbować
Ponadto, po
.poll()
nazwie, kod powrotu jest dostępny w obiekcie jakochild.returncode
.źródło
exitcode = data.wait()
. Proces potomny zostanie zablokowany, jeśli zapisze na standardowym wyjściu / błędzie i / lub odczyta ze standardowego wejścia, a nie ma peerów.źródło
To zadziałało dla mnie. Drukuje również dane wyjściowe zwrócone przez proces potomny
źródło