2015-04-29 2 views
1

У меня есть простое приложение (* .exe), к которому я передаю аргументы командной строки с помощью Python subprocess.Popen, как показано ниже:аргументов Попутных когда питон subprocess.Popen в беге

Write_data = Popen(["Test.exe", arg1, arg2)], 
        cwd = TARGET_PATH, 
        shell = True, 
        stdin=PIPE, 
        stdout=PIPE) 
output = '' 
for line in iter(Write_data.stdout.readline, ""): 
    print line, 
    output += line 

Я запрограммировал мое заявление на получение аргументы и выполнять определенные операции. В настоящее время я вызываю функцию подпроцесса несколько раз каждый раз, когда я хочу протестировать свое приложение с разными данными.

Возможно ли запустить подпроцесс только один раз и отправить аргументы в текущий процесс?

Я пробовал Write_Data.stdin.write(arg3, arg4), но он не работает.

+0

Не используйте функцию фрагмента кода, если не используете html/css/javascript. –

+0

Ошибка в коде '([" Test.exe ", arg1, arg2)],' должно быть '([" Test.exe ", arg1, arg2],' – Kursion

+0

Я думаю, что то, что вы делаете, это только так, невозможно отправить новые аргументы в уже запущенную программу. – rlms

ответ

0

Я думаю, что аргументы не являются инструментом для межпроцессного общения.

Вы можете взаимодействовать с запущенной программой, используя stdin и stdout, как вы пробовали, но вы можете писать только в stdin, как если бы вы записывали в файл и читали из stdout. В stdin нет параметров.

Что происходит, когда вы пишете на stdin, зависит от получателя. Но вы можете позвонить получателю в командной строке и посмотреть, что произойдет, если вы что-то вложите в stdin.

Смежные вопросы