exe Datei in Python starten

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.
Antworten
l3_12
User
Beiträge: 6
Registriert: Donnerstag 10. Oktober 2019, 10:58

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 :(
Benutzeravatar
noisefloor
User
Beiträge: 4191
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

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

Gruß, noisefloor
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

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.
Benutzeravatar
__blackjack__
User
Beiträge: 14047
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@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
Antworten