У меня есть исполняемый файл, который я могу запустить в интерактивном режиме из командной строки Windows. Рабочий процесс выглядит следующим образом:
C:\Users\Me> my_executable.exe # Running the executable from CMD
Welcome! Please choose one:
0: Exit
1: Sub-task 1
2: Sub-task 2
Enter your input: 2 # I entered this interactively
Sub-task 2 chosen.
Please choose next option:
0: Return to previous menu
1: Connect to server
2: Disconnect from server
3: Call server API 1
4: Call server API 2
Enter your input: 1 # I entered this interactively
Полный рабочий процесс сложен и занимает несколько проходов (один раз через подзадачу 1, затем через подзадачу 2 и т. Д.).
Я бы хотел автоматизировать это с помощью Python. Я пытался использовать модуль подпроцесса для достижения этой цели. Тем не менее, мне кажется, что я потерпел неудачу на самой стадии .Popen.
Вот аналогичный вопрос в StackOverflow. Я пытался использовать тот же подход, используя .Popen. Вот что я вижу:
C:\Users\Me> python
Python 3.6.1 (v3.6.1:69c0db5, Mar 21 2017, 18:41:36) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> from subprocess import Popen, PIPE
>>> p = Popen('my-executable.exe', stdin=PIPE)
Traceback (most recent call last):
file "<stdin>", line 1 in <module>
TypeError: unsupported operand type(s) for -:'Popen' and 'Popen'
>>> Welcome! Please choose one:
0: Exit
1: Sub-task 1
2: Sub-task 2
Enter your input: 2 # I am forced to enter this input here.
2 # Python echoes 2 before returning to prompt
>>> # Back to Python prompt
Может кто-нибудь помочь с тем, что я делаю неправильно?