2015-10-10 70 views
0

我已經工作了一整天試圖找出如何使用Python ftplib模塊從FTP服務器上下載文件夾,子文件夾和文件,但我可以的所有文件夾,子文件夾和文件只有拿出這個。Python的 - 下載使用Python FTPLIB模塊

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

短期的解決方案: 你可能只是運行:「wget的-r ftp://username:[email protected]/debian/ *」來獲取所有的debian目錄下的文件。 然後你可以在python中處理文件。

長的解決方案: 您可以通過使用ftplib,獲取目錄列表解析它,然後獲取每個文件並遞歸到目錄中,查看每個目錄列表。 如果你在網上搜索,你會發現previous posts on stackoverlow它解決了這個問題

+0

這太有趣了,你提出這篇文章,因爲那是代碼,這對我來說沒有意義。 –

+0

你能解釋一下這段代碼在這個帖子中做了什麼嗎?'os.mkdir(destination [0:len(destination)-1] + path)' –

+0

'path' - 正在複製的新目錄的路徑服務器。 'directory' - 文件將被複制到的目標目錄。 所以這一行創建了路徑中的文件將被複制到的目錄 – borisp