在Windows上运行wexpect

时间:2012-07-25 14:59:28

标签: python pexpect

我已经在windows7上安装了wexpect,现在当我尝试运行任何命令时,我遇到了错误。我正在使用MKS工具包,所以ls是一个有效的命令。

>>> import pexpect
>>> pexpect.run('ls ')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Python27\lib\site-packages\winpexpect-1.5-py2.7.egg\pexpect.py", line
219, in run
child = spawn(command, maxread=2000, logfile=logfile, cwd=cwd, env=env)
File "C:\Python27\lib\site-packages\winpexpect-1.5-py2.7.egg\pexpect.py", line
429, in __init__
self._spawn (command, args)
File "C:\Python27\lib\site-packages\winpexpect-1.5-py2.7.egg\pexpect.py", line
516, in _spawn
raise ExceptionPexpect ('The command was not found or was not executable: %s
.' % self.command)
pexpect.ExceptionPexpect: The command was not found or was not executable: ls.

有人可以帮忙吗

2 个答案:

答案 0 :(得分:0)

答复很晚,但最近我也遇到了这个问题。

失败的原因很多,或者可能是wexpect.py需要修改(至少在我的情况下)

检查wexpect.py文件的同一目录中生成的pexpect_error.txt文件。

它分叉'python.exe'因此'python.exe'必须在路径中(不允许其他名称的exe)。

当您执行py脚本时,您必须位于wexpect.py的同一目录中(lib文件名必须是wexpect.py而不是pexpect.py)。

cmd(扩展名为.exe / .com / .bat)必须在windows / shell命令提示符下运行。检查一下(例如,当我们运行'ls'时实际在Windows中,它实际上运行ls.exe / com,在py脚本中,提到'ls.exe')

最后但并非最不重要:在我的情况下,Window OS创建的控制台窗口失败(从pexpect_error.txt找到),因此我在下面更改了

第2397行,使得矩形的Y坐标小而不是70,例如24为我工作

答案 1 :(得分:0)

简介:

在可执行文件的末尾添加self.

.exe

详细信息:

问题的根本原因存在于枚举的>>> import pexpect >>> pexpect.run('ls.exe') 命令(方法)中。此方法在文件系统中搜索可执行文件。这是我的wexpect中的关键片段:

which

此代码将# ... for path in pathlist: f = os.path.join(path, filename) if os.access(f, os.X_OK): return f return None # ... 的参数附加为run(),如果它是有效且可执行的路径,则将其返回。请注意,Windows(与Linux不同)可执行文件以filename

结尾

ps .:我希望可以在wexpect的python-3.x变体中对其进行修复。