Я пытаюсь управлять консольным приложением (приложение 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()