我想使用管道在从 python 脚本启动的独立应用程序中执行多个命令。我可以可靠地将命令传递给程序的标准输入的唯一方法是使用 Popen.communicate 但它会在命令执行后关闭程序。如果我使用 Popen.stdin.write 比命令只执行 5 次左右的 1 次,它就不能可靠地工作。我究竟做错了什么?
详细说明一下:
我有一个应用程序,它监听标准输入的命令并逐行执行它们。我希望能够运行应用程序并将各种命令传递给它,基于用户与 GUI 的交互。这是一个简单的测试示例:
import os, string
from subprocess import Popen, PIPE
command = "anApplication"
process = Popen(command, shell=False, stderr=None, stdin=PIPE)
process.stdin.write("doSomething1\n")
process.stdin.flush()
process.stdin.write("doSomething2\n")
process.stdin.flush()
我希望看到这两个命令的结果,但我没有得到任何回应。(如果我多次执行 Popen.write 行之一,它偶尔会起作用。)
如果我执行:
process.communicate("doSomething1")
它运行良好,但应用程序终止。