Seite 1 von 1

exe Datei in Python starten

Verfasst: Freitag 25. Oktober 2019, 15:28
von l3_12
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.

Code: Alles auswählen

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 :(

Re: exe Datei in Python starten

Verfasst: Freitag 25. Oktober 2019, 15:34
von noisefloor
Hallo,

wie sieht denn der Aufruf auf, wenn du die EXE-Datei direkt im Windows cmd aufrufst?

Gruß, noisefloor

Re: exe Datei in Python starten

Verfasst: Freitag 25. Oktober 2019, 15:42
von __deets__
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.

Re: exe Datei in Python starten

Verfasst: Freitag 25. Oktober 2019, 16:38
von __blackjack__
@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.