Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Ich würde gerne in Python eine exe Datei ausführen, welche normalerweise über ein Command Window mit Example.exe -arg1 filename.txt -arg2 -arg3 aufgerufen wird und Daten in einer Txt Datei abspeichert. Ich habe es mit folgendem Code versucht.
import os
import subprocess
FNULL = open(os.devnull, 'w') #use this if you want to suppress output to stdout from the subprocess
args = ["Example.exe", "f filename.txt", "t", "p", "z "]
subprocess.call(args, stdout=FNULL, stderr=FNULL, shell=True)
Jedoch führt das nicht zum gewünschten Ergebnis, da keine Txt-Datei mit Daten erstellt wird.... Python zeigt aber auch keine Fehlermeldung an, so dass ich das Problem nicht finde
Du musst die Argumente trennen. -f filename.txt sind *ZWEI* Argumente im Sinne des generellen Mechanismus, der ja eine Liste von Strings uebergibt. Was du machst ist *ein* Argument zu uebergeben, mit einem Leerzeichen darin. Das erzeugt dann ggf. einen falschen Dateinamen oder nix oder was auch immer das Example.exe damit macht.
@l3_12: Die Datei in die die Ausgabe umgelenkt wird, solltest Du als Binärdatei öffnen. Und das ``shell=True`` gehört da nicht hin, das kann auch noch mal Fehler verstecken, zum Beispiel wenn die Shell nix mit dem Anfangen kann was Du willst, oder wenn das Programm nicht gefunden werden kann, oder…
Und wenn das externe Programm Probleme mit den Argumenten hat, wird es das ausgeben. Da Du die Ausgabe aber unterdrückst siehst Du nicht was das Problem ist. Da Du auch den Rückgabecode nicht prüfst, bekommst Du nicht mit wenn da etwas nicht funktioniert. Denn aus Sicht von Deinem Programm hat ja alles geklappt.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari