2014-03-02 66 views
1

我想用python下載FTP文件。我能夠成功進入目錄但無法下載文件。Python的FTP下載不起作用

我使用的命令是ftp.retrbinary('master.idx', open(fname,'wb').write)

及以下誤差。它看起來像命令正在尋找的MASTER.IDX代替master.idx

的完整路徑我要下載的文件是ftp://ftp.sec.gov/edgar/full-index/2011/QTR2/master.idx

Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "/usr/lib/python2.7/ftplib.py", line 406, in retrbinary 
    conn = self.transfercmd(cmd, rest) 
    File "/usr/lib/python2.7/ftplib.py", line 368, in transfercmd 
    return self.ntransfercmd(cmd, rest)[0] 
    File "/usr/lib/python2.7/ftplib.py", line 331, in ntransfercmd 
    resp = self.sendcmd(cmd) 
    File "/usr/lib/python2.7/ftplib.py", line 244, in sendcmd 
    return self.getresp() 
    File "/usr/lib/python2.7/ftplib.py", line 219, in getresp 
    raise error_perm, resp 
ftplib.error_perm: 500 MASTER.IDX not understood 
+0

我的猜測是,文件名在MASTER.IDX中返回的事實是該FTP服務器的某種特質。 –

+0

如果你發佈了你的整個程序,幫助你會容易得多。 –

回答

2

我不能說爲什麼名稱更改爲大寫。在任何情況下,在使用FTP時,我提出這樣的,它可以幫助你:

server = "URL.of.server" 
directory = "directory/where/the/file/is" 
filename = "nameoffile.txt" 

from ftplib import FTP 
ftp = FTP(server) #Set server address 
ftp.login() # Connect to server 
ftp.cwd(directory) # Move to the desired folder in server 
ftp.retrbinary('RETR ' + filename,open(filename, 'wb').write) # Download file from server 
ftp.close() # Close connection 

我認爲這可能是「RETR」,如果你不寫,它的服務器可能不明白你想要做什麼

+0

工作,我沒有意識到'RETR'是必需的。 – RedRaven