我有一个可执行文件(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和输入文件结合起来,请帮助我。
答案 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已建议工作: