Python Popen 子进程 - 在标准输入关闭之前无法与可执行文件交互

问题描述 投票:0回答:1

我正在尝试与命令行可执行文件交互,但我被卡住了。 我想打印出 .exe 正在生成到标准输出的每一行。 直到我在一行中得到“条件”->然后它应该写“y “到标准输入

这可行,但是一旦我写入标准输入,我就不再得到任何标准输出输出。如果我关闭 stdin ->,我只会得到输出,但之后我无法再进行交互,因为 .exe 停止了。

有什么提示吗? 谢谢!

    proc = Popen([test.exe], stdout=PIPE, stdin=PIPE, stderr=STDOUT)


    while True:
      line = proc.stdout.readline()
      print(line)
      if not line: break
      if "condition" in line.decode(): break
    
    proc.stdin.write('{}\n'.format("y\n").encode('utf-8'))
    proc.stdin.close()

    while True:
      line = proc.stdout.readline()
      print(line)
      if not line: break
      if "Group" in line.decode(): break
    
    proc.wait()
python subprocess stdout stdin popen
1个回答
0
投票

考虑刷新程序的

stdin
以避免 python 缓冲管道,而不是关闭管道。

proc.stdin.write('{}\n'.format("y\n").encode('utf-8'))
proc.stdin.flush()
© www.soinside.com 2019 - 2024. All rights reserved.