pysftp vs. Paramiko

Posted

技术标签:

【中文标题】pysftp vs. Paramiko【英文标题】: 【发布时间】:2018-07-04 05:36:47 【问题描述】:

我有一个简单的要求,将文件放到 SFTP 服务器上。我找到了似乎允许我这样做的 pysftp 和 Paramiko 库,并使用 Paramiko 开发了一个简单的应用程序,但我找不到比较两者的合适来源,因此我可以决定我可以/应该使用哪个。各有什么优缺点?

【问题讨论】:

【参考方案1】:

pysftp 是 Paramiko 的包装器,具有更多 Python 风格的界面。

pysftp 接口并未公开 Paramiko 的所有功能。另一方面,pysftp 在 Paramiko 之上实现了更多高级功能,尤其是递归文件传输。


pysftp 自 2016 年以来一直没有更新,所以它似乎是废弃的项目。它在其最新版本中还存在一些从未修复过的重大问题。特别是在 Windows 上使用时,递归传输不起作用。因此,在 Windows 上,pysftp 与(维护的)Paramiko 相比没有显着优势。

Python pysftp put_r does not work on Windows Python pysftp get_r from Linux works fine on Linux but not on Windows "Failed to load HostKeys" warning while connecting to SFTP server with pysftp

如果您没有任何花哨的低级需求(如unusual methods of verifying host key、proxies、advanced keyboard interactive authentication、setting a timeout 等),请使用 pysftp,因为它可能更容易使用。另一方面,由于 pysftp 似乎已死,用它开始新的开发可能不是一个好主意。

如果您需要低级功能,请使用 Paramiko。

如果您需要 Paramiko 的低级功能和 pysftp 的高级功能,请使用 Paramiko 并查看pysftp code 以获得高级功能。或者,我对以下问题的回答也显示了一个完整且独立于平台的递归传输实现:

Python pysftp put_r does not work on Windows Python pysftp get_r from Linux works fine on Linux but not on Windows

您可以使用 pysftp Connection.sftp_client 访问一些未在 pysftp 中公开的 Paramiko 功能,它返回底层 Paramiko SFTPClient object。示例见pysftp: How to update last modified date。

【讨论】:

以上是关于pysftp vs. Paramiko的主要内容,如果未能解决你的问题,请参考以下文章

使用 pysftp 验证主机密钥

使用 pysftp 验证主机密钥

使用 pysftp 验证主机密钥

pysftp 身份验证超时

如何从 pysftp 获取上次修改时间

pysftp 忽略禁用的主机密钥检查