我有个计划,myshell.exe,我需要通过python与之交互(向它发送命令并读回结果)。在
问题是我只能运行myshell.exe
一次(不能将popen括起来并在循环中通信)
我尝试过popen
和popen.communicate()
,但似乎是在运行myshell.exe
,发送我的命令,然后退出进程。在
# settin up the command
p = Popen("myshell.exe", stdout=PIPE, stdin=PIPE, stderr=PIPE, shell=True)
# sending something (and getting output)
print p.communicate("run");
此时,从打印输出中我可以看到我的myshell.exe
已经退出(我有一个打印的再见消息)。在
有什么办法吗? 谢谢。在
正如您可以在^{} 文档中阅读的那样,它将等到
myshell.exe
退出后再返回。在使用
p.stdout
和p.stdin
与进程通信:
^{pr2}$p.stdin
和p.stdout
是常规文件对象。您可以在一个循环中读写它们,只需将p = Popen(...)
部分放在外面:这假设
myshell.exe
的行为与您预期的一样(例如,在发送第一个命令后不退出)。在相关问题 更多 >
编程相关推荐