Code: Alles auswählen
try:
retcode = subprocess.Popen( [ r"my.exe \"{}\"".format( "filename.ext" ) ], shell=True ).communicate()[0]
print( retcode )
except WindowsError as e:
print( e )
Unter Windows verwendet Subprocess.Popen eine Methode, um eine Liste der Argumente in einen String umzuwandeln: print( subprocess.list2cmdline( params ) )
Das gibt etwas wie "my.exe \"filename.ext\""
Die Option shell=True bewirkt unterschiedliche Fehlermeldungen (ohne: "[Error 2] Das System...") der Anwendung, die eigentlich im Fehlerfall ein Dialogfenster öffnet. Vielleicht ist das das Problem, dass es sich nicht um eine echte Konsolenanwendung handelt?
PS: Wenn ich die Argumente als Liste übergebe, ohne shell=True, bewirkt das, dass der Fehler im Dialogfenster kommt.. Es bewirkt auch, dass list2cmdline keine Anführungszeichen um den kompletten Aufruf setzt, dafür ist aber das Argument, dass in Anführungszeichen sein sollte, mit Backslashes escaped (\"argument\") (In der Liste habe ich die Anführungszeichen manuell dem Argument-String hinzugefügt).