0

我有一个 Visual Studio 应用程序,它采用交互式参数,例如

- PATH 

在 input 上,显示 MENU #1(它再次接受参数/用户输入),在 input 上再次显示 MENU #2。

我需要从 Python 调用这个 VS 应用程序(exe)。我有限制坚持使用 Python 2.5 版本。

我尝试使用 subprocess.popen 和 stdin.write。

我能够通过 MENU#1 进行解析,但无法继续进行 MENU #2 等等......

有关实现上述目标的任何提示/示例。?

我的代码如下所示:

p = subprocess.Popen('app.exe',stdin=subprocess.PIPE,stdout=subprocess.PIPE,stderr=None)
p.stdin.write(file_path)  # for menu 1

time.sleep(0.5)

p.stdin.write('0')         # for menu 2..

...

o,e = p.communicate()
4

1 回答 1

1

改用pexpect模块;它可以让你控制一个比 subprocess 模块更好的交互式输入的程序。

import pexpect

p = pexpect.spawn('app.exe')
p.sendline(file_path)
p.expect('Menu #2:.*')
p.sendline('0')

对于 Windows,您可以改用模块到 Windows 控制台wexpect.py的端口。pexpect

于 2012-08-23T08:43:35.133 回答