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