Как запустить exe файл с помощью аргументов с помощью python

Предположим, что у меня есть файл 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])

но это не сработало.

Ответ 1

Вы также можете использовать 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)

Разница между call и Popen заключается в том, что call блокируется, а Popen - нет, а Popen предоставляет более общую функциональность. Обычно call подходит для большинства целей, это, по сути, удобная форма Popen. Вы можете прочитать больше на этот вопрос.

Ответ 2

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

Должен работать.

Ответ 3

Принятый ответ устарел. Для всех, кто нашел это, вы можете теперь использовать subprocess.run(). Вот пример:

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

Аргументы также могут быть отправлены в виде строки, но вам нужно установить shell=True. Официальную документацию можно найти здесь.