Запуск консольной команды или exe файла, выполняемого в консоли в отдельном окне с последующей передачей туда команд
Имеется EXE-шник, который выполняется в консоли. Нужно, чтобы он запускался в отдельном от консоли самого скрипта окне, для этого я использовал команду os.startfile, но при запуске данный EXE-шник запрашивает имя файла. Можно ли как-то реализовать передачу туда команды с названием файла при помощи скрипта?
UPD. Сделал тестовую программу с названием testprog.exe, при вводе 'yes' выводит 'получилось', при вводе любой другой команды выводит 'не получилось' (в обоих случаях окно консоли не закрывается, так как в конце стоит input()). Нужно с помощью скрипта открыть эту программу в новом окне и передать туда команду, например, 'yes'.
Я попытался использовать данный код, чтобы передать туда команду 'yes', но окно открылось и тут же закрылось, поэтому данный способ как минимум не совсем корректен.
cmd = 'testprog.exe'
p = subprocess.Popen(cmd, creationflags=subprocess.CREATE_NEW_CONSOLE, stdin=subprocess.PIPE, stdout=subprocess.PIPE)
p.stdin.write(b'yes') # Также пробовал p.communicate(input='yes')
p.stdin.close() #
UPD2 Небольшое пояснение, нет необходимости в получении потока вывода программы скриптом. Идеальная схема выполнения: я запускаю скрипт, появляется консоль, где написан результат в зависимости от переданной команды.
Ответы (1 шт):
Мой фейл, при создании тестовой программы я упустил, что будет появляться ошибка при её вызове, связанная с тем, что для предотвращения закрытия окна я написал input().
Код тестовой программы:
ink = input('Введите команду ')
if ink == 'yes':
print ('Получилось')
input()
else:
print ('Не получилось')
input()
Если input() заменить на time.sleep(), то всё работает, используя команду
p=subprocess.run(command, creationflags=subprocess.CREATE_NEW_CONSOLE, input=b'yes') (для вывода "получилось")