1
import subprocess
import sys

proc = subprocess.Popen(["program.exe"], stdin=subprocess.PIPE) #the cmd program opens
proc.communicate(input="filename.txt") #here the filename should be entered (runs)
#then the program asks to enter a number:
proc.communicate(input="1") #(the cmd stops here and nothing is passed)
proc.communicate(input="2") # (same not passing anything)

我如何使用 python 传递和与 cmd 通信。

谢谢。(使用windows平台)

4

1 回答 1

6

上的文档communicate()对此进行了解释:

与进程交互:将数据发送到标准输入。从 stdout 和 stderr 读取数据,直到到达文件结尾。等待进程终止。

communicate()一旦输入被发送就阻塞,直到程序完成执行。在您的示例中,程序在您 send 之后等待更多输入"1",但 Python 等待它在到达下一行之前退出,这意味着整个事情都死锁了。

如果您想互换地读取和写入很多内容,请创建管道stdin/stdout并写入/读取到/从它们。

于 2012-10-15T11:28:31.583 回答