2016-07-15 103 views
0

我試圖從遠程服務器上的文件複製到使用FTP我的本地機器tar文件,併爲它.:的ftp使用python

import os 
from ftplib import FTP 
btsIp=raw_input("Enter the IP:") 
try: 
    ftp=FTP(btsIp,user='',passwd='',timeout=20) 

except : 
    print("FTP Connection failed") 
sys.exit(1) 
ftp.cwd('/store/slv_imt') 
filenames=ftp.nlst() 
for eachFile in filenames: 
    localName=os.path.join('D:\Users\shaik-s\Documents\SLV_logs',eachFile) 
    file=open(localName,'w') 
    ftp.retrbinary('RETR' + eachFile,file.write) 
    file.close() 
ftp.quit() 

但是,我得到的錯誤,我寫了一個python腳本,因爲命令不明白: slv_imt_2016-07-13__00-00-34.tar

Traceback (most recent call last): 
    File "C:/Python27/Scripts/ftp.py", line 16, in <module> 
    ftp.retrbinary('RETR' + eachFile,file.write) 
    File "C:\Python27\lib\ftplib.py", line 414, in retrbinary 
    conn = self.transfercmd(cmd, rest) 
    File "C:\Python27\lib\ftplib.py", line 376, in transfercmd 
    return self.ntransfercmd(cmd, rest)[0] 
    File "C:\Python27\lib\ftplib.py", line 339, in ntransfercmd 
    resp = self.sendcmd(cmd) 
    File "C:\Python27\lib\ftplib.py", line 249, in sendcmd 
    return self.getresp() 
    File "C:\Python27\lib\ftplib.py", line 224, in getresp 
    raise error_perm, resp 
error_perm: 500 'RETRSLV_IMT_2016-07-13__00-00-34.TAR': command not understood. 

請幫助..

回答

0

要修正這個錯誤,你需要「RETR」和「eachFile之間添加空格」。

ftp.retrbinary('RETR %s'%eachFile, file.write) 

但是,您的代碼表明您可能會遇到另一個問題,請嘗試使用以下cmd。

file = open(localName, 'wb') 
+0

非常感謝佳樂樂,解決方案的作品! –