Не передаётся команда в консольную программу
Проблема такая:
Есть 2 exe файла:
- Я создал как тестовую программу на питоне и запаковал в exe
- Оригинальная программа Обе программы запрашивают имя файла для дальнейшей работы, теперь поэтапно.
а)p = subprocess.Popen(exe_path, creationflags=subprocess.CREATE_NEW_CONSOLE)
С помощью данного участка кода обе программы запускаются (не вместе, естественно, а при наличии какой-либо из них по пути exe_path) в отдельной консоли и в ней уже запрашивают имя файла.
б) p = subprocess.Popen(exe_path, creationflags=subprocess.CREATE_NEW_CONSOLE, stdin=subprocess.PIPE)
Далее, если добавлять параметр stdin, то обе программы будут открываться в новой консоли и тут же закрываться
в)
import subprocess
raw_data_file_name = input('Введите название файла исходных данных: ')
command = bytes(raw_data_file_name, encoding='utf-8')
p = subprocess.Popen(exe_path, creationflags=subprocess.CREATE_NEW_CONSOLE, stdin=subprocess.PIPE)
p.communicate(input=command)
В этом случае моя тестовая программа принимает команду с названием файла и начинает выполнять свои функции, а оригинальная программа нет и тут же закрывается как на этапе "б". В чём может быть проблема и как её исправить?
Небольшое примечание: если вручную вводить одно и то же название файла в обе программы, то они работать будут, но с автоматизацией появляются такие проблемы.
UPD. Попробовал отправить команду без перевода в байтовую строку:
import subprocess
raw_data_file_name = input('Введите название файла исходных данных: ')
p = subprocess.Popen(exe_path, creationflags=subprocess.CREATE_NEW_CONSOLE, stdin=subprocess.PIPE, text=True)
p.communicate(input=raw_data_file_name)
Опять же моя тестовая программа работает, а оригинальная тут же закрывается
UPD2. Если подходить к этому вопросу с другой стороны, а именно пытаться запустить exe файл вручную через командную строку сразу с названием файла:
открываю командную строку, меняю директорию на ту, где находится программа, ввожу команду
proga.exe file_name.
В таком случае моя тестовая программа просто открывается и ожидает введения названия файла, а оригинальная программа принимает название файла и начинает работу. Если можно как-то автоматизировать процесс через командную строку, буду благодарен за советы. Для этого нужны команды, которые отдельно от скрипта открывают окно командной строки, меняют директорию, в этой директории передают команду proga.exe file_name, ждут окончания выполнения команды с определённым таймаутом, после которого процесс должен быть принудительно остановлен.