繁体   English   中英

python的多个stdin.write用法

[英]Multiple stdin.write usage with python

我有一个Visual Studio应用程序,它需要诸如

- PATH 

输入时,显示MENU#1(再次接受参数/用户输入),输入时再次显示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()

改用pexpect模块 与子流程模块相比,它使您可以更好地控制具有交互式输入的程序。

import pexpect

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM