#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)