我有一个简单的要求,将文件放到 SFTP 服务器上。我找到了似乎允许我这样做的 pysftp 和 Paramiko 库,并使用 Paramiko 开发了一个简单的应用程序,但我找不到比较两者的合适来源,因此我可以决定我可以/应该使用哪个。各有什么优缺点?
1 回答
pysftp 是一个围绕 Paramiko 的包装器,具有更多 Python 风格的界面。
pysftp 接口并没有暴露 Paramiko 的所有功能。另一方面,pysftp 在 Paramiko 之上实现了更多高级功能,尤其是递归文件传输。
pysftp 自 2016 年以来一直没有更新,所以它似乎是废弃的项目。它在其最新版本中还存在一些从未修复过的重大问题。特别是在 Windows 上使用时,递归传输不起作用。因此,在 Windows 上,pysftp 与(维护的)Paramiko 相比没有显着优势。
如果您没有任何花哨的低级需求(例如验证主机密钥、代理、高级键盘交互式身份验证、设置超时等的不寻常方法),pysftp 可能更容易使用。另一方面,由于 pysftp 似乎已经死了,用它开始新的开发可能不是一个好主意。
如果您需要低级功能,请使用 Paramiko。
如果您需要 Paramiko 的低级功能和 pysftp 的高级功能,请使用 Paramiko 并检查pysftp 代码以获取高级功能。或者,我对以下问题的回答也显示了递归传输的完整且独立于平台的实现:
您可以使用 pysftp 访问一些未在 pysftp 中公开的 Paramiko 功能
Connection.sftp_client
,它返回底层ParamikoSFTPClient
对象。例如,请参阅 pysftp:如何更新上次修改日期。