Python3 FTP 文件上传下载

在网络应用中,文件上传和下载是常见的功能需求。在 Python 中,我们可以使用 FTP(文件传输协议)来实现文件的上传和下载操作。本文将介绍如何使用 Python 的 ftplib 模块实现 FTP 文件上传和下载。

什么是 FTP

FTP(File Transfer Protocol,文件传输协议)是用于在网络上进行文件传输的一种标准协议。使用 FTP,我们可以方便地将文件从一个计算机上传到另一个计算机,或者从一个计算机下载到另一个计算机。

FTP 协议使用客户端-服务器模型,其中客户端负责发起文件传输请求,而服务器负责处理这些请求并提供文件的传输。

ftplib 模块简介

Python 的 ftplib 模块是用于实现 FTP 功能的标准库。该模块提供了一组方法,可以用于连接 FTP 服务器、上传和下载文件,以及执行其他与 FTP 相关的操作。

要使用 ftplib 模块,我们需要先导入该模块:

from ftplib import FTP

连接到 FTP 服务器

在进行文件上传和下载之前,我们首先需要连接到一个 FTP 服务器。要连接到 FTP 服务器,我们需要知道服务器的主机名(hostname),端口号(port)、用户名(username)和密码(password)。

下面是一个连接到 FTP 服务器的例子:

# 创建 FTP 对象
ftp = FTP()

# 连接到 FTP 服务器
ftp.connect('ftp.example.com', 21)

# 登录 FTP 服务器
ftp.login(username, password)

在上面的例子中,我们首先创建了一个 FTP 对象,然后使用 connect() 方法连接到 FTP 服务器,并使用 login() 方法登录 FTP 服务器。

文件上传

要上传文件到 FTP 服务器,我们可以使用 storbinary() 方法。该方法需要提供一个 FTP 命令(如 'STOR')和一个本地文件的路径。

下面是一个上传文件到 FTP 服务器的例子:

# 打开本地文件
file = open('local_file.txt', 'rb')

# 上传文件到 FTP 服务器
ftp.storbinary('STOR remote_file.txt', file)

# 关闭本地文件
file.close()

在上面的例子中,我们首先打开一个本地文件,然后使用 storbinary() 方法将该文件上传到 FTP 服务器,上传的文件名为 'remote_file.txt'。最后,我们关闭本地文件。

文件下载

要从 FTP 服务器下载文件,我们可以使用 retrbinary() 方法。该方法需要提供一个 FTP 命令(如 'RETR')和一个本地文件的路径。

下面是一个从 FTP 服务器下载文件的例子:

# 打开本地文件
file = open('local_file.txt', 'wb')

# 从 FTP 服务器下载文件
ftp.retrbinary('RETR remote_file.txt', file.write)

# 关闭本地文件
file.close()

在上面的例子中,我们首先打开一个本地文件,然后使用 retrbinary() 方法从 FTP 服务器下载文件,并将下载的内容写入到本地文件中。下载的文件名为 'remote_file.txt'。最后,我们关闭本地文件。

关闭连接

在完成文件上传和下载之后,我们需要关闭与 FTP 服务器的连接。可以使用 quit() 方法来关闭连接。

下面是一个关闭与 FTP 服务器的连接的例子:

# 关闭与 FTP 服务器的连接
ftp.quit()

完整示例

下面是一个完整的示例,演示了如何使用 ftplib 模块实现文件上传和下载:

from ftplib import FTP

# 连接到 FTP 服务器
ftp = FTP()
ftp.connect('ftp.example.com', 21)
ftp.login(username, password)

# 上传文件到 FTP 服务器
file = open('local_file.txt', 'rb')
ftp.storbinary('STOR remote_file.txt', file)
file.close()

# 下载文件到本地
file = open('local_file.txt', 'wb')
ftp.retrbinary('RETR remote_file.txt', file.write)
file.close()

# 关闭与 FTP 服务器的连接
ftp.quit()

上面的示例中,我们首先连接到 FTP 服务器,然后上传一个本地文件到 FTP 服务器,并将其命名为 'remote_file.txt'。接着,我们从 FTP