1

我正在尝试使用 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来找到窗口的句柄并写入它吗?

4

0 回答 0