web-dev-qa-db-ja.com

pythonを使用して引数を指定してexeファイルを実行する方法

ファイルRegressionSystem.exeがあるとします。 -config引数を指定してこの実行可能ファイルを実行します。コマンドラインは次のようになります。

RegressionSystem.exe -config filename

私は次のように試しました:

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])

しかし、うまくいきませんでした。

16
bappa147

必要に応じて subprocess.call() を使用することもできます。例えば、

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)

callPopenの違いは、基本的にcallがブロックしているのに対し、Popenはブロックしていないことです。Popenはより一般的な機能を提供します。通常、callはほとんどの目的に適していますが、本質的にはPopenの便利な形式です。詳しくは この質問 をご覧ください。

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

動作するはずです。

3
Rested

受け入れられた答えは時代遅れです。これを見つけた人は誰でもsubprocess.run()を使用できます。次に例を示します。

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

引数は代わりに文字列として送信することもできますが、Shell=Trueを設定する必要があります。公式ドキュメントは here にあります。

2
Daniel Butler