如何使用Python在FTP服务器中下载和上传文件?

2021年11月16日19:43:14 发表评论 893 次浏览

Python如何下载和上传文件?了解如何使用 Python 的内置 ftplib 模块分别使用 RETR 和 STOR 命令在 FTP 服务器中下载和上传文件,包含一些实际的Python下载和上传文件示例。

Python在FTP服务器中下载和上传文件 - FTP 服务器的主要功能之一是能够存储和检索文件。在本教程中,你将学习如何使用 Python 在 FTP 服务器上下载和上传文件。

我们将使用 Python 的内置ftplib模块,我们将在本教程中使用一个测试 FTP 服务器,它被称为DLPTEST,让我们定义它的信息:

import ftplib

FTP_HOST = "ftp.dlptest.com"
FTP_USER = "dlpuser@dlptest.com"
FTP_PASS = "SzMf7rTE4pCrf9dV286GuNe4N"

密码可能会不时更改,请确保你访问他们的网站以获取正确的凭据,并连接到此服务器:

# connect to the FTP server
ftp = ftplib.FTP(FTP_HOST, FTP_USER, FTP_PASS)
# force UTF-8 encoding
ftp.encoding = "utf-8"

Python下载和上传文件示例:上传文件

Python如何下载和上传文件?要上传文件,我们需要使用ftp.storbinary()方法,以下代码处理:

# local file name you want to upload
filename = "some_file.txt"
with open(filename, "rb") as file:
    # use FTP's STOR command to upload the file
    ftp.storbinary(f"STOR {filename}", file)

我们以“rb”模式打开文件,这意味着我们正在以二进制模式读取本地文件。

之后,我们使用了 FTP 的STOR命令,该命令以二进制模式存储文件,并将该文件传输到新端口。请注意,该文件必须存在于你的本地工作目录中,否则这将不起作用。

这个测试服务器会在30分钟后删除文件,为了确保文件上传成功,我们需要使用  ftp.dir()方法列出所有文件和目录:

# list current files & directories
ftp.dir()

果然,文件在那里:

drwxr-xr-x    2 dlptest9   dlptest9        40960 Apr 11 07:04 .
drwxr-xr-x    2 dlptest9   dlptest9        40960 Apr 11 07:04 ..
-rw-r--r--    1 dlptest9   dlptest9          172 Apr 11 07:00 357299070163503-2020-04-11-11-59.txt
-rw-r--r--    1 dlptest9   dlptest9          171 Apr 11 07:01 357299070163503-2020-04-11-12-00.txt
-rw-r--r--    1 dlptest9   dlptest9          171 Apr 11 07:02 357299070163503-2020-04-11-12-01.txt
-rw-r--r--    1 dlptest9   dlptest9          171 Apr 11 07:03 357299070163503-2020-04-11-12-02.txt
-rw-r--r--    1 dlptest9   dlptest9           20 Apr 11 07:04 some_file.txt
-rw-r--r--    1 dlptest9   dlptest9           24 Apr 11 07:00 syslogtest_be.txt

Python下载和上传文件示例:下载文件

现在让我们尝试再次下载相同的文件:

# the name of file you want to download from the FTP server
filename = "some_file.txt"
with open(filename, "wb") as file:
    # use FTP's RETR command to download the file
    ftp.retrbinary(f"RETR {filename}", file.write)

这一次,我们以“wb”模式打开本地文件,因为我们要将文件从服务器写入本地机器。

Python如何下载和上传文件?我们正在使用RETR命令,它会在服务器上下载文件的副本,我们提供要下载的文件名作为命令的第一个参数,服务器将向我们发送文件的副本。

所述ftp.retrbinary()存储在本地计算机上的文件作为第二个参数时方法采用的方法来调用。

Python在FTP服务器中下载和上传文件 - 如果你删除该文件并运行上述代码,你将看到该文件将再次出现,我们已成功下载该文件!

最后,你必须退出并关闭 FTP 连接:

# quit and close the connection
ftp.quit()

好了,教程讲完了,我把下载和上传脚本的代码分开了,看这里。

最后,如果你是初学者,想学习Python,我建议你在密歇根大学的5个在线课程中学习 Master Python ,你会学到很多关于Python的知识,祝你好运!

木子山

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: