para Python 2.7+, a resposta idiomática é usar subprocess.check_output()
Você também deve observar a manipulação de argumentos ao chamar um subprocesso, pois pode ser um pouco confuso ....
Se args é apenas um comando sem args próprio (ou você shell=True
configurou), pode ser uma sequência. Caso contrário, deve ser uma lista.
por exemplo ... para chamar o ls
comando, tudo bem:
from subprocess import check_call
check_call('ls')
então é isso:
from subprocess import check_call
check_call(['ls',])
no entanto, se você quiser passar alguns argumentos para o comando shell, não poderá fazer isso:
from subprocess import check_call
check_call('ls -al')
em vez disso, você deve passá-lo como uma lista:
from subprocess import check_call
check_call(['ls', '-al'])
a shlex.split()
função às vezes pode ser útil para dividir uma string em sintaxe semelhante a shell antes de criar um subprocesso ... assim:
from subprocess import check_call
import shlex
check_call(shlex.split('ls -al'))
"ntpq -p"
, o que é uma parte diferente de o problema do que você está perguntando.