使用wexpect运行可执行文件

时间:2012-07-03 23:38:05

标签: python

我有一个可执行文件(evap.exe),必须使用输入文件(inputs.prj)调用,通常只需输入c:\ myfiles \ evap inputs.prj即可使用Windows命令提示符执行此操作(当然可执行文件和输入文件都位于myfiles文件夹中)

现在我希望能够使用python做同样的事情。 SO上的其他类似问题建议使用wexpect,因为当可执行文件要求运行其他信息时,其他方法(如子进程)不起作用(对于我的情况,信息是输入文件)。我试过了:

import wexpect

wexpect.run(r'c:\myfiles\evapo.exe')

和python挂起......如果有人知道如何使用cmd将exe和输入文件结合起来,请帮助我。

2 个答案:

答案 0 :(得分:4)

如果您要传递的所有信息都是文件名,则不需要wexpect

from subprocess import check_call

check_call(r'c:\myfiles\evapo.exe inputs.prj')

答案 1 :(得分:1)

我猜wexpect是一个pexpect的python端口,行为相似但在windows上工作。

我检查了以下内容:http://www.jjoseph.org/files/led_calibration/wexpect.py

如果是这种情况,那么pexpect的任何示例都应该有用。

  当您只想收集输出时,应该使用

run()命令。   当您想要进行交互并提供输入时,这不起作用。

如果要发送输入,则需要使用spawn()函数。

请参阅代码中的示例。这里命令要求输入由wexpect

发送的输入
child = wexpect.spawn('some command')
child.expect ('Password:')
child.sendline (mypassword)

请仔细阅读关于pexpect的以下答案,并将其替换为wexpect。

并且对于以下端口的Windows已建议工作: