2

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

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

import wexpect

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

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

4

2 回答 2

4

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

from subprocess import check_call

check_call(r'c:\myfiles\evapo.exe inputs.prj')
于 2012-07-04T00:04:08.823 回答
1

我猜 wexpect 是 pexpect 的一个 python 端口,行为类似,但适用于 Windows。

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

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

当您只想收集输出时,应该使用 run() 命令。当您想要交互并提供输入时,这不起作用。

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

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

child = wexpect.spawn('some command')
child.expect ('Password:')
child.sendline (mypassword)

只需通过以下有关 pexpect 的答案并将其替换为 wexpect。

并且对于windows,以下端口也被建议作为工作之一:

于 2012-07-03T23:55:43.037 回答