Für Python 2.7+ lautet die idiomatische Antwort: subprocess.check_output()
Sie sollten auch die Behandlung von Argumenten beim Aufrufen eines Unterprozesses beachten, da dies etwas verwirrend sein kann.
Wenn args nur ein einzelner Befehl ohne eigene Argumente ist (oder Sie festgelegt haben shell=True
), kann es sich um eine Zeichenfolge handeln. Ansonsten muss es eine Liste sein.
Zum Beispiel ... um den ls
Befehl aufzurufen , ist dies in Ordnung:
from subprocess import check_call
check_call('ls')
also das ist:
from subprocess import check_call
check_call(['ls',])
Wenn Sie jedoch einige Argumente an den Shell-Befehl übergeben möchten, können Sie dies nicht tun:
from subprocess import check_call
check_call('ls -al')
Stattdessen müssen Sie es als Liste übergeben:
from subprocess import check_call
check_call(['ls', '-al'])
Die shlex.split()
Funktion kann manchmal nützlich sein, um einen String in eine Shell-ähnliche Syntax aufzuteilen, bevor Unterprozesse erstellt werden ... wie folgt:
from subprocess import check_call
import shlex
check_call(shlex.split('ls -al'))
"ntpq -p"
, was ein anderer Teil von ist das Problem, als Sie fragen.