Python - 使用 python ftplib 模块下载所有文件夹、子文件夹和文件

Python - download all folders, subfolders, and files with the python ftplib module

我整天都在努力弄清楚如何使用 python ftplib 模块从 ftp 服务器下载文件夹、子文件夹和文件,但我只能想出这个。

from ftplib import FTP
import sys, ftplib

sys.tracebacklimit = 0 # Does not display traceback errors
sys.stderr = "/dev/null" # Does not display Attribute errors

Host = "ftp.debian.org"
Port = 21
Username = ""
Password = ""

def MainClass():
    global ftp
    global con
    Host
    Port
    ftp = FTP()
    con = ftp.connect(Host, Port) # Connects to the host with the specified port

def grabfile():
    source = "/debian/"
    filename = "README.html"
    ftp.cwd(source)
    localfile = open(filename, 'wb')
    ftp.retrbinary('RETR ' + filename, localfile.write)
    ftp.quit()
    localfile.close()

try:
    MainClass()
except Exception:
    print "Not Connected"
    print "Check the address", Host + ":" + str(Port)
else:
    print "Connected"

if ftplib.error_perm and not Username == "" and Password == "":
    print "Please check your credentials\n", Username, "\n", Password

credentials = ftp.login(Username, Password)
grabfile()

此 python 脚本将从 ftp.debian.org 下载 README.html 文件,但是,我希望能够下载包含文件和子文件夹的整个文件夹,但我似乎无法下载搞清楚。我使用此模块搜索了不同的 python 脚本,但我似乎找不到任何可以满足我要求的脚本。

如有任何建议或帮助,我们将不胜感激。

注: 我仍然想使用 python 来完成这项工作,但它可能是一个不同的模块,例如 ftputil 或任何其他模块。

提前致谢, 亚历克斯

简短的解决方案: 您可能只需 运行: "wget -r ftp://username:password@ftp.debian.org/debian/*" 即可获取 debian 目录下的所有文件。 然后就可以处理python.

中的文件了

长解: 您可以使用 ftplib 遍历每个目录列表,获取目录列表对其进行解析,然后获取每个文件并递归到目录中。 如果您在网上搜索,您会发现 previous posts on stackoverlow 解决了这个问题