per Python 2.7+ la risposta idiomatica è quello di utilizzare subprocess.check_output()
Si dovrebbe inoltre notare la gestione di argomenti quando si invoca un sottoprocesso, in quanto si può essere un po 'di confusione ....
Se args è solo un singolo comando senza argomenti propri (o si ha shell=True
impostato), può essere una stringa. Altrimenti deve essere una lista.
per esempio ... per richiamare il comando ls
, questo va bene:
from subprocess import check_call
check_call('ls')
modo è questo:
from subprocess import check_call
check_call(['ls',])
tuttavia, se si desidera passare alcuni argomenti per il comando di shell , si non si può fare questo:
from subprocess import check_call
check_call('ls -al')
ins tead, si deve passare come un elenco:
from subprocess import check_call
check_call(['ls', '-al'])
la funzione shlex.split()
a volte può essere utile per dividere una stringa in sintassi di conchiglia, prima di creare un sottoprocessi ... come questo:
from subprocess import check_call
import shlex
check_call(shlex.split('ls -al'))
fonte
2016-03-08 02:38:33
È sempre utile postare il codice effettivamente eseguito e il traceback effettivo o bahaviour inatteso per domande concrete come questa. Ad esempio, non so cosa hai provato a fare per ottenere l'output e ho il sospetto che in realtà non sei arrivato così lontano per iniziare - avresti avuto un errore nel non trovare il file per "" ntpq -p "' , che è una parte diversa del problema di quanto tu stia chiedendo. –