我正在尝试将类似 REPL 的命令行程序集成到 Python 项目中。命令行程序接受一个输入字符串并返回一个输出字符串,它在单独运行时工作正常。问题是,当我尝试使用Popen().stdout.peek()或.read()时,它会挂起并且不产生输出。
>>> p = Popen('Test.exe', stdin=PIPE, stdout=PIPE, stderr=PIPE)
>>> p.stdin.write(bytes('message\n', 'utf-8'))
8
>>> p.stdin.flush()
>>> p.stdout.peek() # Hangs
有趣的是,如果命令行程序也是用 Python 编写的,这确实有效,但是当使用我真正想使用的程序时,它会挂起。在命令行中手动运行时,这两个程序都按预期运行。我也不能使用,p.communicate('message')因为进程是有状态的,我需要执行多个命令。
相关分类