Python pysftp 模块

2025年1月12日 | 阅读 7 分钟

SFTP,即 SSH 文件传输协议 的缩写,也称为 安全文件传输协议,是一种网络协议,允许我们在任何可靠的数据流上访问、传输和管理文件。该程序在一个安全通道上工作,例如 SSH,该通道已经由服务器对客户端进行了身份验证,并且客户端用户的身份可供协议使用。

使用脚本处理 SFTP 事宜,如果我们使用 Python 等编程语言,总是可以得到支持的。Python 提供了 pysftp 模块,使我们能够轻松高效地处理这项技术。

在接下来的教程中,我们将通过一些示例来理解 pysftp 模块及其在 Python 编程语言中的用途。那么,我们开始吧。

理解 Python pysftp 模块

Python pysftp 模块是 SFTP 的一个简单接口。该模块提供了高级抽象和基于任务的调度,以处理 SFTP 的需求。SFTP 协议本身不提供安全性,也不提供身份验证;它依赖于底层协议来保护它。SFTP 最广泛的用途是作为 SSH 协议版本 2 的子系统实现,由同一工作组设计。

Python pysftp 模块是一个用户友好的接口,旨在简化 Python 应用程序中的 SFTP (安全文件传输协议) 操作。pysftp 构建在 paramiko 库之上,该库为 SSH 通信提供了强大的基础,它简化了安全文件传输的复杂性,使开发人员能够专注于核心应用程序逻辑,而不是安全文件处理的细节。

在核心上,pysftp 能够通过 SSH 轻松连接到远程服务器。通过利用简单的语法和 Pythonic 的资源管理方式(通过 `with` 语句),pysftp 确保连接的安全建立并在使用后正确关闭。这最大限度地减少了留下未关闭连接的风险,而未关闭连接可能是重大的安全隐患。

现在,让我们安装 Python SFTP 模块或 pysftp

如何安装 pysftp 模块?

pysftp 接口并未暴露 Paramiko 的大部分功能;然而,它使用单个方法抽象了大部分功能。相比之下,pysftp 模块在 Paramiko 之上实现了更多高级功能,特别是递归文件传输。

我们可以使用 pip 安装程序和以下命令来安装 pysftp 模块

语法

该模块将以 Python 和 pip 的版本安装到系统中。

验证安装

为了检查模块是否已正确安装到系统中,我们可以尝试导入模块并执行程序。

安装完成后,创建一个新的 Python 文件并在其中输入以下语法。

示例

现在,保存文件并在命令提示符下使用以下命令运行该文件。

语法

如果程序运行没有出现任何导入错误,则表示模块已正确安装。否则,建议重新安装模块并参考其官方文档。

使用 pysftp 访问 SFTP 服务器

我们可以使用 Python 中的 pysftp 模块列出目录的内容。为了实现此目标,我们需要主机名、用户名和密码。

然后,我们需要使用 chdircwd 方法切换目录,并将第一个参数指定为远程目录。

让我们来看一个相同的示例。

示例

说明

上面的代码片段是一个不存在的虚拟服务器。但实际上,我们需要利用环境变量来获取原始凭据,并将它们存储在任何文件中以确保安全,而不是将所有凭据都放在单个文件中。建议将其放在环境变量文件中。例如,.env 文件。

现在,让我们理解上面的代码。上面的代码片段对任何人来说都是相同的,因为我们需要提供凭据,程序就会开始工作。

首先,我们导入了 pysftp 模块,然后提供了变量来存储主机名、用户名和密码的值。然后,我们使用 Python 的 with 语句,通过提供主机名、用户名和密码来打开与远程服务器的安全连接。如果成功,我们将切换到远程目录,获取列表,并在控制台中逐个打印。

列表的顺序是任意的,不包含唯一的条目 '.' 和 '..'。返回的 SFTPAttributes 对象将包含一个额外的字段:longname,它可能包含 UNIX 格式的文件属性的格式化字符串。字符串的内容将取决于 SFTP 服务器。

使用 Python 中的 pysftp 上传文件

我们可以使用 pysftp 通过 SFTP 将文件上传到远程服务器,方法是使用 SFTP 客户端的 sftp.put() 函数。put 方法将我们要上传的文件的本地相对或绝对路径作为第一个参数,并将文件应该上传到的远程路径作为第二个参数。

让我们看下面的代码片段以更好地理解。

示例

说明

在上面的代码片段中,我们建立了安全连接,然后定义了两个文件路径——local_File_Pathremote_File_Path

  1. local_File_Path:这是本地文件的路径。
  2. remote_File_Path:这是远程文件的路径。

然后,我们使用了 sftp.put() 函数将文件上传到服务器。

使用 Python 中的 pysftp 下载远程文件

在前一节中,我们介绍了如何使用 pysftp 上传文件。现在,让我们探讨如何下载文件。要使用 pysftp 从远程服务器下载文件,您首先需要打开与服务器的连接。连接成功后,您可以使用 sftp 实例的 get 方法。此方法接受两个参数:第一个是要下载的远程文件的路径,第二个是文件将在您的系统上保存的本地路径。

让我们看下面的例子来演示这一点。

示例

说明

在上面的代码片段中,我们定义了一个连接,然后定义了两个文件路径——remote_File_Pathlocal_File_Path

  1. remote_File_Path:这是文件所在的位置的路径。
  2. local_File_Path:这是文件将被下载的路径。

然后,我们使用 sftp.get() 函数下载文件。

使用 Python 中的 pysftp 删除文件

我们可以使用 pysftp 的 sftp.remove() 函数来删除文件。remove() 函数将远程文件的绝对路径作为第一个参数。

让我们看下面的例子来演示这一点。

示例

说明

在上面的代码片段中,我们打开了一个连接,然后定义了一个 remove_File_Path 变量,该变量包含需要删除的文件的路径。

然后,我们使用 sftp.remove() 函数将文件从远程服务器删除。

pysftp 模块有多种函数可供我们使用,例如处理权限等,可以执行各种活动。也可以参考 Python pysftp 模块的官方文档。