Как запустить 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])
но это не сработало.
5 ответов
Вы также можете использовать 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
, Вы можете прочитать больше на этот вопрос.
Принятый ответ устарел. Для всех, кто нашел это, теперь вы можете использовать subprocess.run()
, Вот пример:
import subprocess
subprocess.run(["RegressionSystem.exe", "-config filename"])
Аргументы также могут быть отправлены в виде строки вместо списка, но вам нужно установить shell=True
, Официальную документацию можно найти здесь.
os.system("/path/to/exe/RegressionSystem.exe -config "+str(config)+" filename")
Должно сработать.
Я не понимал, как работают аргументы. Пример: «-fps 30» - это не один, а два аргумента, которые нужно было передать следующим образом (Py3)
args=[exe,"-fps","30"].
Может это кому-то поможет.
Вот хороший пример. В дальнейшем я получил аргумент
count
текущей программы, затем добавьте их в массив как
argProgram = []
. Наконец я позвонил
subprocess.call(argProgram)
передать их целиком и напрямую:
import subprocess
import sys
argProgram = []
if __name__ == "__main__":
# Get arguments from input
argCount = len(sys.argv)
# Parse arguments
for i in range(1, argCount):
argProgram.append(sys.argv[i])
# Finally run the prepared command
subprocess.call(argProgram)
В этом
code
я должен был запустить исполняемое приложение с именем `Bit7z.exe":
python Bit7zt.py Bit7zt.exe -e 1.zip -o extract_folder
Примечание: я использовал
for i in range(1, argCount):
заявление, потому что мне не нужен первый аргумент.