Python 使用wexpect运行可执行文件

Python 使用wexpect运行可执行文件,python,wexpect,Python,Wexpect,我有一个可执行文件(evapo.exe),必须用输入文件(inputs.prj)调用它,通常我使用windows命令提示符,只需键入c:\myfiles\evapo inputs.prj即可(当然,可执行文件和输入文件都位于myfiles文件夹中) 现在我希望能够使用python做同样的事情。这里的其他类似问题建议使用wexpect,因为当可执行文件要求运行其他信息时,其他方法(如subprocess)不起作用(在我的例子中,信息是输入文件)。我试过: import wexpect wexpe

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

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

import wexpect

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

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

我想wexpect是pexpect的python端口,其行为类似,但在windows上工作

我检查了以下内容:

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

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

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

请参见代码中的示例。在这里,该命令请求一个由wexpect发送的输入

child = wexpect.spawn('some command')
child.expect ('Password:')
child.sendline (mypassword)
只需在pexpect上完成以下答案,并将其替换为wexpect即可

对于windows,建议将以下端口作为工作端口:


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

from subprocess import check_call

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

@Eric Gentil:我希望这有帮助:似乎有两个模块:wexpect和winpexpect。他们不一样吗?@EricGentil:是的。两者似乎都是一个理想的港口。另外,如果您的程序期望文件名作为命令行参数,则我的解决方案无效。我的印象是,这个程序需要用户输入,比如键入密码。如果您“只需键入c:\myfiles\evapo inputs.prj”来运行它,那么可执行文件就不会“要求运行其他信息”,它可以从命令行参数中获得所需的所有信息。但你没有传递任何论点。如果不知道evapo做了什么,就不可能确定,但我敢打赌,在没有任何争论的情况下,它读的是stdin,这就是它挂起的原因。