【发布时间】:2018-07-04 05:36:47
【问题描述】:
我有一个简单的要求,将文件放到 SFTP 服务器上。我找到了似乎允许我这样做的 pysftp 和 Paramiko 库,并使用 Paramiko 开发了一个简单的应用程序,但我找不到比较两者的合适来源,因此我可以决定我可以/应该使用哪个。各有什么优缺点?
【问题讨论】:
标签: python python-3.x sftp paramiko pysftp
我有一个简单的要求,将文件放到 SFTP 服务器上。我找到了似乎允许我这样做的 pysftp 和 Paramiko 库,并使用 Paramiko 开发了一个简单的应用程序,但我找不到比较两者的合适来源,因此我可以决定我可以/应该使用哪个。各有什么优缺点?
【问题讨论】:
标签: python python-3.x sftp paramiko pysftp
pysftp 是 Paramiko 的包装器,具有更多 Python 风格的界面。
pysftp 接口并未公开 Paramiko 的所有功能。另一方面,pysftp 在 Paramiko 之上实现了更多高级功能,尤其是递归文件传输。
pysftp 自 2016 年以来一直没有更新,所以它似乎是废弃的项目。它在其最新版本中还存在一些从未修复过的重大问题。特别是在 Windows 上使用时,递归传输不起作用。因此,在 Windows 上,pysftp 与(维护的)Paramiko 相比没有显着优势。
如果您没有任何花哨的低级需求(如unusual methods of verifying host key、proxies、advanced keyboard interactive authentication、setting a timeout 等),请使用 pysftp,因为它可能更容易使用。另一方面,由于 pysftp 似乎已死,用它开始新的开发可能不是一个好主意。
如果您需要低级功能,请使用 Paramiko。
如果您需要 Paramiko 的低级功能和 pysftp 的高级功能,请使用 Paramiko 并查看pysftp code 以获得高级功能。或者,我对以下问题的回答也显示了一个完整且独立于平台的递归传输实现:
您可以使用 pysftp Connection.sftp_client 访问一些未在 pysftp 中公开的 Paramiko 功能,它返回底层 Paramiko SFTPClient object。示例见pysftp: How to update last modified date。
【讨论】: