pour Python 2.7+, la réponse idiomatique est d'utiliser subprocess.check_output()
Vous devriez également noter la gestion des arguments lors de l'appel d'un sous-processus, car cela peut être un peu déroutant ....
Si args est une commande unique sans argument propre (ou si vous l'avez shell=True
défini), il peut s'agir d'une chaîne. Sinon, ce doit être une liste.
par exemple ... pour appeler la ls
commande, c'est bien:
from subprocess import check_call
check_call('ls')
il en est de même:
from subprocess import check_call
check_call(['ls',])
cependant, si vous voulez passer quelques arguments à la commande shell, vous ne pouvez pas faire ceci:
from subprocess import check_call
check_call('ls -al')
à la place, vous devez le transmettre sous forme de liste:
from subprocess import check_call
check_call(['ls', '-al'])
la shlex.split()
fonction peut parfois être utile pour diviser une chaîne en syntaxe de type shell avant de créer un sous-processus ... comme ceci:
from subprocess import check_call
import shlex
check_call(shlex.split('ls -al'))
"ntpq -p"
, ce qui est une partie différente de le problème que vous demandez.