可以在Windows上使用Expect而不安装Cygwin吗?

12 投票
6 回答
26253 浏览
提问于 2025-04-15 12:29

Expect是一个模块,用来启动和控制子应用程序。我对Python和Ruby这两种语言比较感兴趣。

6 个回答

4

你可以使用Windows的命令提示符。

首先,你需要在你的Windows系统上安装Python。

打开命令提示符,然后输入下面的命令:

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
6

winpexpectpexpect 在 Windows 系统上的本地版本。你可以在这里找到它:

https://github.com/geertj/winpexpect

17

有一个叫做 WExpect for Python 的工具。

wexpect.py 文件中的一些说明(拼写错误未更改,突出显示已添加)

Wexpect 是 pexpect 在 Windows 上的移植版本。因为 Windows 上的 Python 缺少运行 pexpect 所需的一些模块(比如 pty、tty、select、termios、fctnl 和 resource),所以需要创建一个后端来实现这些模块所依赖的功能。Wtty.py 就是这个后端。在 Windows 系统中,控制台的类型并不统一。它们可以使用低级或高级的输入输出功能。为了正确处理这两种情况,Spawn 的实例会创建两个子进程,还有一个中间子进程可以不断地从控制台读取数据,并通过管道将这些数据发送到 wtty 的实例。Spawner.py 负责读取和传输数据。

我尽量保留了尽可能多的代码,也尽量保留了很多注释(特别是那些没有改变的函数),所以很多注释可能会让人误解它们与操作系统特定功能的关系。此外,sendcontrol 和 sendeof 这两个函数目前还没有实现,因为我找不到适合 Windows 的有效版本。
另外,在 Windows 上,控制台没有相关的文件描述符,所以全局变量 child_fd 将始终为 None。

撰写回答