per Python 2.7+ la risposta idiomatica è usare subprocess.check_output()
Si dovrebbe anche notare la gestione degli argomenti quando si richiama un sottoprocesso, in quanto può essere un po 'confuso ....
Se args è solo un singolo comando senza argomenti propri (o hai shell=True
impostato), può essere una stringa. Altrimenti deve essere un elenco.
per esempio ... per invocare il ls
comando, va bene:
from subprocess import check_call
check_call('ls')
così è questo:
from subprocess import check_call
check_call(['ls',])
tuttavia, se si desidera passare alcuni argomenti al comando shell, non è possibile farlo:
from subprocess import check_call
check_call('ls -al')
invece, devi passarlo come un elenco:
from subprocess import check_call
check_call(['ls', '-al'])
la shlex.split()
funzione a volte può essere utile per dividere una stringa in una sintassi simile alla shell prima di creare un sottoprocesso ... in questo modo:
from subprocess import check_call
import shlex
check_call(shlex.split('ls -al'))
"ntpq -p"
, che è una parte diversa di il problema di quello che stai chiedendo.