Como recupero o código de saída ao usar o subprocess
módulo e o communicate()
método do Python ?
Código relevante:
import subprocess as sp
data = sp.Popen(openRTSP + opts.split(), stdout=sp.PIPE).communicate()[0]
Eu deveria estar fazendo isso de outra maneira?
python
subprocess
Aproveite a noite
fonte
fonte
from subprocess import Popen
e, em seguida, é só usarPopen
em vez desubprocess(or sp).Popen
que eu diria que provavelmente aumenta a legibilidade e encurta linhasprocess.communicate()
e depois atribuirreturncode
a alguma variável. Se a atribuição for feita antes da chamadacommunicate
, éNone
.Você deve primeiro verificar se o processo concluiu a execução e se o código de retorno foi lido usando o
.wait
método Isso retornará o código. Se você quiser acessar mais tarde, ele será armazenado como.returncode
noPopen
objeto.fonte
.communicate()
já aguarda a finalização do subprocesso..poll()
atualizará o código de retorno.Experimentar
Além disso, depois de
.poll()
chamado, o código de retorno está disponível no objeto comochild.returncode
.fonte
exitcode = data.wait()
. O processo filho será bloqueado Se gravar na saída / erro padrão e / ou ler a partir da entrada padrão, e não houver pares.fonte
Isso funcionou para mim. Também imprime a saída retornada pelo processo filho
fonte