Как мне передать строку в модуль подпроцесса?

#python #python-3.x #command-line #subprocess

#python #python-3.x #командная строка #подпроцесс

Вопрос:

У меня есть исполняемый файл, который будет запрашивать различные параметры, например; Исполняемый файл: sample.exe На бегу sample.exe , я получаю приглашение ввести параметры «справка», «отображение», «выход».

Мне нужно ввести все это и проверить вывод, имеет ли он действительный вывод.

Я использую подпроцесс для запуска sample.exe .

Я могу передать ввод с помощью subprocess.communicate(input='help')

Но кроме quit all опция не завершит консоль и все еще ожидает ввода.

Пробный код:

 p_run = subprocess.Popen(['sample.exe'], shell=True, stdout=subprocess.PIPE, stdin=subprocess.PIPE)
p_run_out = p_run.communicate(input=b'help')
print(p_run_out)
  

Здесь он застрял в p_run_out = p_run.communicate(input=b'help') as sample.exe , ожидая другого ввода. Это заканчивается только тогда, когда мы передаем quit

Как я могу передать следующую команду? Как получить вывод предыдущей команды (‘help’)?

Комментарии:

1. Вам нужно будет внести больше ясности в свой вопрос и включить код, который вы пробовали, и каков ваш ожидаемый результат.

2. @PacketLoss Я только что обновил детали

Ответ №1:

Вы можете передать несколько команд и прочитать вывод только первой команды.

Обновленный код:

 p_run = subprocess.Popen(['sample.exe'], shell=True, stdout=subprocess.PIPE, stdin=subprocess.PIPE)
p_run_out = p_run.communicate(input=b'helpnquit')[0]
print(p_run_out)