web-dev-qa-db-fra.com

comment exécuter un fichier exe avec les arguments en utilisant python

Supposons que j'ai un fichier RegressionSystem.exe. Je veux exécuter cet exécutable avec un -config argument. La ligne de commande doit ressembler à:

RegressionSystem.exe -config filename

J'ai essayé comme:

regression_exe_path = os.path.join(get_path_for_regression,'Debug','RegressionSystem.exe')
config = os.path.join(get_path_for_regression,'config.ini')
subprocess.Popen(args=[regression_exe_path,'-config', config])

mais ça n'a pas marché.

16
bappa147

Vous pouvez également utiliser subprocess.call() si vous le souhaitez. Par exemple,

import subprocess
FNULL = open(os.devnull, 'w')    #use this if you want to suppress output to stdout from the subprocess
filename = "my_file.dat"
args = "RegressionSystem.exe -config " + filename
subprocess.call(args, stdout=FNULL, stderr=FNULL, Shell=False)

La différence entre call et Popen est essentiellement que call bloque tandis que Popen ne l'est pas, avec Popen fournissant des fonctionnalités plus générales. Généralement, call convient à la plupart des applications, il s'agit essentiellement d'une forme pratique de Popen. Vous pouvez en savoir plus sur cette question .

17
hjweide
os.system("/path/to/exe/RegressionSystem.exe -config "+str(config)+" filename")

Devrait marcher.

3
Rested

La réponse acceptée est obsolète. Pour quiconque trouve cela, vous pouvez maintenant utiliser subprocess.run(). Voici un exemple:

import subprocess
subprocess.run(["RegressionSystem.exe", "-config filename"])

Les arguments peuvent également être envoyés sous forme de chaîne, mais vous devrez définir Shell=True. La documentation officielle peut être trouvée ici .

2
Daniel Butler