Ich habe einen Befehl, der in der Befehlszeile funktioniert. Es hat viele Argumente wie cmd --thing foo --stuff bar -a b input output
Verwenden von Python zum Ausführen anderer Programme
Ich möchte dies von Python ausführen und blockieren, bis es abgeschlossen ist. Da das Skript Dinge auf stdout
und stderr
druckt, möchte ich es dem Benutzer sofort gezeigt werden.
Was ist das richtige Modul dafür?
Ich habe versucht:
import commands
output = commands.getoutput("cmd --thing foo --stuff bar -a b input output")
print output
funktioniert dies sehr gut mit Ausnahme der stdout
nicht bis zum Ende zurückgegeben.
import os
os.system("cmd --thing foo --stuff bar -a b input output")
diese druckt alle ausgegeben, wenn die cmd tatsächlich beendet ist.
import subprocess
subprocess.call(["cmd", "--thing foo", "--stuff bar", "-a b", "input", "output"])
dies nicht passiert die Parameter richtig irgendwie (ich habe das genaue Problem zu finden, nicht in der Lage gewesen, aber cmd
meine Eingabe ablehnt). Wenn ich echo
als den ersten Parameter setze, druckt es den Befehl aus, der tadellos funktioniert, wenn ich ihn direkt in das Terminal einfüge.
import subprocess
subprocess.call("cmd --thing foo --stuff bar -a b input output")
genau die gleichen wie oben.
Behoben. Vielen Dank. –