我正在尝试使用 Python 与 Windows 命令行程序进行交互。我正在为此使用该subprocess
模块。下面是启动程序的代码。
kwargs = dict(stdin=subprocess.PIPE,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
universal_newlines=True)
p = subprocess.Popen("ansys191.exe", **kwargs)
这将打开带有新控制台窗口的程序。我可以stdout
使用以下代码从中读取。
while True:
line = p.stdout.readline().strip()
if line: print(line)
if line.startswith("BEGIN:") or line.startswith("PREP7:"):
break
启动后,程序会在BEGIN:
提示下停止。它不退出。但是,当我尝试向其写入命令时它不起作用stdin
,如下所示。
p.stdin.write("/prep7")
p.stdout.readline() #Blocks here
这是代码和窗口的屏幕截图。该命令没有打开其他窗口。
阅读“/prep7”命令后,程序应该写入一些文本并在提示符下stdout
停止。PREP7:
但是,如果我在新的控制台窗口中输入一些内容,我可以从它的stdout
.
我在这里错过了什么吗?我必须用它win32gui
来找到窗口的句柄并写入它吗?