我可以在 Windows 上使用 Expect 而不安装 Cygwin 吗?
题
Expect 是一个用于生成子应用程序并控制它们的模块。我对 Python 和 Ruby 感兴趣。
解决方案
中的注释 wexpect.py
文件(拼写错误未更改并添加了突出显示)
我们期望 是 pexpext 到 Windows 的端口。由于Windows的Python缺少必要的模块(PTY,TTY,SELECT,TERMIOS,FCTNL和资源)来运行PEXpect,因此有必要创建一个后端,该后端实现了使用这些模块所使用的任何功能。 wtty.py 就是这个后端。在 Windows 世界控制台不是同构的。他们可以使用低电平或高电平 电平输入和输出功能,并正确处理两种情况 子进程是为 Spawn 的 instacne 创建的,带有中间子进程 可以连续从控制台读取数据,并通过管道发送该数据 添加到 wtty 的实例。 生成器.py 负责读取和管道 数据。
我将尽可能多的代码完好无损,并且也试图留下一定的评论是可能的(尤其是尚未更改的函数),因此许多评论在与OS特定功能的关系中会误导它们。还, 此时,函数sendcontrol和sendeof尚未解放,因为我找不到这些功能的有意义的Windows版本。
此外,控制台在Windows上没有关联的FILD描述符,因此全局变量CHILD_FD永远不会。
其他提示
winpexpect
是pexpect
到Windows的本机端口。它可以在这里找到:
您可以使用Windows命令提示符。
您需要安装在你的Windows安装了Python。
打开CMD提示符并执行以下命令:
C:\Users\xxx>pip install pexpect
(如果设置Python路径中的系统变量)
或
C:\Users\xxx>c:\python27\scripts\pip.exe install pexpect
Collecting pexpect
Downloading pexpect-4.0.1.tar.gz (143kB)
100% |################################| 147kB 1.2MB/s
Collecting ptyprocess>=0.5 (from pexpect)
Downloading ptyprocess-0.5.1-py2.py3-none-any.whl
Building wheels for collected packages: pexpect
Running setup.py bdist_wheel for pexpect
Stored in directory: C:\Users\xxx\AppData\Local\pip\Cache\wheels\f2\65\89\09578bcd0efeabc7e2b0079cd62d3955c1477f2e55aa5031a4
Successfully built pexpect
Installing collected packages: ptyprocess, pexpect
Successfully installed pexpect-4.0.1 ptyprocess-0.5.1
wexpect的最新工作版本住在的http://圣人。 math.washington.edu/home/goreckc/sage/wexpect/
希望这将很快合并上游。
使用Pexpect的 https://github.com/pexpect/pexpect
“Pexpect的是纯Python”,所以它会在任何地方运行,而不Cygwin的太,
编辑:Pexpect的取决于PTY模块这是目前仅限Linux,从而<强>的Nik 强>建议你应该使用wexpect是Pexpect的的端口
上我已经成功地使用在Cygwin下Pexpect的。现在存在由于 Windows下POSIX 兼容性问题没有别的办法。
另一件事:WExpect就像Pexpect的,实际上它需要Cygwin的! 在这一点上,是Pexpect的一个更好的选择。