Expect 是一个用于生成子应用程序并控制它们的模块。我对 Python 和 Ruby 很感兴趣。
6 回答
Python有WExpect。
文件中的注释wexpect.py
(错别字未更改并添加了突出显示)
Wexpect是 Windows 的 pexpext 端口。由于适用于 Windows 的 python 缺少运行 pexpect 所需的模块(pty、tty、select、termios、fctnl 和资源),因此有必要创建一个后端来实现任何依赖于这些模块的函数。 Wtty.py就是这个后端。在 Windows 世界中,控制台不是同质的。他们可以使用低级或高级输入和输出功能,并且为了正确处理这两种情况,为 Spawn 的实例创建了两个子进程,其中一个中间子进程可以连续从控制台读取,并通过管道将数据发送到wtty 的一个实例。 Spawner.py 负责读取和管道数据。
我已经尽可能多地保留了完整的代码,并且还尝试保留尽可能多的注释(尤其是对于尚未更改的函数),因此许多注释在它们与操作系统特定功能的关系方面会产生误导。此外,函数 sendcontrol 和 sendeof 目前尚未实现,因为我找不到这些函数的有意义的 Windows 版本。
此外,控制台在 Windows 上没有关联的字段描述符,因此全局变量 child_fd 将始终为 None。
winpexpect
是pexpect
Windows 的本机端口。在这里能找到它:
您可以使用 Windows CMD 提示符。
您需要在 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
使用 pexpect https://github.com/pexpect/pexpect
“Pexpect 是纯 Python”,因此它可以在任何地方运行,也无需 Cygwin,
编辑:pexpect 依赖于 pty 模块,该模块目前仅适用于 Linux,因此Nik建议您应该使用 wexpect,它是 pexpect 的一个端口
wexpect 的最新工作版本位于http://sage.math.washington.edu/home/goreckc/sage/wexpect/
希望它很快会在上游合并。
我已经在 Cygwin 下成功使用了 Pexpect。由于Windows 下的POSIX兼容性问题,目前没有其他方法。
另一件事:WExpect 像 Pexpect 一样工作,实际上它需要 Cygwin!此时,PExpect 是更好的选择。