Я пытаюсь управлять консольным приложением (приложение JTAG от Segger) из Python с помощью модуля подпроцесса. Приложение работает правильно для стандартного вывода, но стандартный ввод не читается. Если включить оболочку, я могу ввести данные и управлять приложением, но мне нужно сделать это программно. Тот же код прекрасно работает для выдачи команд на что-то вроде cmd.exe.
Я предполагаю, что клавиатура читается напрямую вместо стандартного ввода. Любые идеи, как я могу отправить заявку приложения?
from subprocess import Popen, PIPE, STDOUT
jtag = Popen('"C:/Program Files/SEGGER/JLinkARM_V402e/JLink.exe"', shell=True,
universal_newlines=True,
stdin=PIPE,
stdout=PIPE,
stderr=STDOUT)
jtag.stdin.write('usb\n')
jtag.stdin.flush()
print "Stdout:"
while True:
s = jtag.stdout.readline()
if not s:
break
print s,
jtag.terminate()