我正在考虑制作一个需要从各种 aircrack-ng 套件工具发送输入和输出的程序。我知道一些 python 模块,例如 subprocess、envoy、sarge 和 pexpect,它们可以提供必要的功能。任何人都可以就我应该使用或不使用什么提供建议,特别是因为我是 python 新手。
谢谢
我正在考虑制作一个需要从各种 aircrack-ng 套件工具发送输入和输出的程序。我知道一些 python 模块,例如 subprocess、envoy、sarge 和 pexpect,它们可以提供必要的功能。任何人都可以就我应该使用或不使用什么提供建议,特别是因为我是 python 新手。
谢谢
作为 的维护者sarge
,我可以告诉您,它的目标大致类似于envoy
(在易用性方面subprocess
),并且(IMO)在sarge
以下方面具有更多功能:
&&
, ||
, )&
subprocess
输出流并异步处理它们当然是 YMMV,但您可以查看文档,它们相当全面。
在 2015 年,pexpect 不适用于 Windows。传闻下个版本会增加“实验性”支持,不过这已经是谣言很久了(我没有屏住呼吸)。
在使用 pexpect 编写了许多应用程序(并且喜欢它)之后,我现在很抱歉,因为我喜欢 python 的一件事(它是跨平台的)不适用于我的应用程序。
如果您打算暂时添加 Windows 支持,请避免使用 pexpect。
去年活动不多。自 2012 年以来,很少有提交(总共 12 次)。对它的未来不太有希望。
在内部,它以与 Windows 路径不兼容的方式使用 shlex(命令必须使用“/”而不是“\”作为目录分隔符)。一种解决方法(使用 pathlib 时)是在将路径对象作为命令传递之前对路径对象调用as_posix() 。看到这个答案。
访问内部流(即我想解析输出以获得一些更新滚动条),似乎是可能的,但没有记录。
在开箱即用的 Windows 上工作,并且有一个 expect() 方法,该方法应该提供类似于 pexpect 的功能(允许我更新滚动条)。最近的活动,但它托管在gitlab和bitbucket上(非常混乱)。
我正在从 pexpect 转变 为 sarge以谋求未来的发展。似乎提供了与 pexpect 类似的功能集并支持 windows。
subprocess - 是一个标准库模块,所以它可以在 python 安装中使用。但它有一个难以使用的名声,因为它的 api 不直观。
envoy - 是一个围绕子流程的第三方模块。它被编写为一个易于使用的替代子流程。特使 Kenneth Reitz 的作者以他的Python for Humans哲学而闻名。
其他两个我不熟悉。