2

我正在考虑开始使用 Pexpect。在 Pexpects 主页上,我发现:

问:为什么不直接使用 Expect?

答:我喜欢。这很棒。我已经让我摆脱了一些真正的障碍,但我想要的东西能够满足我对 Expect 的 90% 的需求;为大小的 10%;并允许我用 Python 而不是 TCL 编写我的代码。Pexpect 没有Expect 大,但Pexpect 可以完成我曾经使用过Expect 的所有功能。

Pexpect 和 Expect 之间有 10% 的差异。所以我的问题是这 10% 的差异是什么。什么是Expect 可以做而Pexpect 不能做的。

4

1 回答 1

9

这个问题(“ Expect 不能做什么,Expect 能做什么”)有点误导。并不是Pexpect 做不到Expect 可以做的事情;就是 Expect 有很多额外的支持来使这种编程更容易。

例如,以交互命令为例,它允许用户直接与生成的进程交互。在 Pexpect 中,这就是 interact 所做的一切。(正如您所说,这可能足以满足您的需求。)相比之下,Expect 的交互支持在交互期间检测模式、将多个衍生进程挂钩在一起等。当然,您可以通过自己编写代码来完成所有这些工作。但是你的代码会更长——有时会更长,因为你基本上必须重写你自己的交互,你必须调试它,等等。事实上,你可能已经遇到过这些情况,但没有意识到有多么简单等效的期望代码将是。

当然,额外的支持可能会被您对 Python 的偏好所抵消。:-P

于 2010-08-27T20:26:46.353 回答