Как запустить приложение с параметрами в Python?
Мне нужно запустить приложение (двоичный файл) и передать аргументы с помощью кода Python. Некоторые аргументы представляют строки, полученные при обработке файлов Python.
for i in range ( len ( files ) ) :
subprocess.call(["test.exe", files[i]]) //How to pass the argument files[i]
Спасибо...
Обновленный вопрос:
Возможно, я не понимаю передаваемые аргументы в Python 3. Код без параметров работает нормально
args = ['test. exe']
subprocess.call(args)
Однако код с параметром вызывает ошибку:
args = ['test. exe']
subprocess.call(args, '-f') //Error
Ошибка:
Error File "C:\Python32\lib\subprocess.py", line 467, in call
return Popen(*popenargs, **kwargs).wait()
File "C:\Python32\lib\subprocess.py", line 652, in __init__
raise TypeError("bufsize must be an integer")
TypeError: bufsize must be an integer
Ответы
Ответ 1
args = ['test. exe']
subprocess.call(args, '-f') //Error
должен быть:
args = ['test.exe', '-f']
subprocess.call(args)
Аргумент командной строки должен находиться внутри одного списка для первого параметра subprocess.call. Второй аргумент для вызова - bufsize, который должен быть целым (следовательно, почему вы получаете сообщение об ошибке)
Ответ 2
Что касается вашего обновленного вопроса: Аргументы для вашего подпроцесса не передаются как отдельные параметры для вызова(); скорее, они передаются как один список строк, например:
args = ["test.exe", "first_argument", "second_argument"]
Оригинальный ответ:
Код, который у вас есть, создаст отдельный процесс для каждого элемента в файлах. Если это вам нужно, ваш код должен работать. Если вы хотите вызвать программу со всеми файлами одновременно, вы захотите объединить свой список:
args = ["test.exe"] + files
subprocess.call(args)
Ответ 3
Все, что вам нужно сделать, это включить его в список аргументов, а не как отдельный аргумент:
subprocess.call(["test.exe", files[i]])