Как получить код выхода при использовании subprocess
модуля и communicate()
метода Python ?
Соответствующий код:
import subprocess as sp
data = sp.Popen(openRTSP + opts.split(), stdout=sp.PIPE).communicate()[0]
Должен ли я делать это по-другому?
python
subprocess
CarpeNoctem
источник
источник
from subprocess import Popen
а затем просто использоватьPopen
вместо того,subprocess(or sp).Popen
что я бы сказал, что, вероятно, увеличивает читабельность и укорачивает строкиprocess.communicate()
а затем присвоитьreturncode
какую-то переменную. Если назначение сделано до вызоваcommunicate
, естьNone
.Сначала вы должны убедиться, что процесс завершен и код возврата считан с использованием
.wait
метода. Это вернет код. Если вы хотите получить к нему доступ позже, он сохраняется как.returncode
вPopen
объекте.источник
.communicate()
уже ожидает завершения подпроцесса..poll()
обновит код возврата.Пытаться
Кроме того, после
.poll()
вызова код возврата доступен в объекте какchild.returncode
.источник
exitcode = data.wait()
, Дочерний процесс будет заблокирован, если он записывает в стандартный вывод / ошибку и / или читает из стандартного ввода, и нет никаких одноранговых узлов.источник
Это сработало для меня. Он также печатает выходные данные, возвращаемые дочерним процессом
источник