我正在尝试使用 subprocess 模块从 Python 控制控制台应用程序(Segger 的 JTAG 应用程序)。应用程序在标准输出上表现正确,但似乎没有读取标准输入。如果启用 shell,我可以输入输入并控制应用程序,但我需要以编程方式执行此操作。相同的代码适用于向 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()