Python - 使用python ftplib模块

时间:2015-10-10 05:08:47

标签: python python-2.7 python-3.x ftp ftplib

我一整天都在努力弄清楚如何使用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或其他任何模块。

提前致谢, 亚历

1 个答案:

答案 0 :(得分:1)

简短的解决方案: 你可以运行:“wget -r ftp://username:password@ftp.debian.org/debian/ *”来获取debian目录下的所有文件。 然后你可以在python中处理文件。

长期解决方案: 您可以使用ftplib查看每个目录列表,获取解析它的目录列表,然后获取每个文件并递归到目录中。 如果您在网络上搜索,则会找到解决此问题的previous posts on stackoverlow