Как запустить приложение с параметрами в 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]])