我是python的新手,并尝试从ftp文件夹下载所有csv文件但我收到此错误。 这是我的代码:
ftp = ftplib.FTP('192.128.0.20', 'bingo', 'Password')
ftp.cwd('/')
filematch = '*.csv'
for filename in ftp.nlst(filematch):
fhandle = open(filename,'wb')
ftp.retrbinary('RETR' + filename, fhandle.write)
fhandle.close()
这是我的错误:
Traceback (most recent call last):
File "./dirmon.py", line 65, in <module>
ftp.retrbinary('RETR' + filename, fhandle.write)
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 RETRRINGGODATA-2014-07-02.CSV not understood
答案 0 :(得分:3)
ftp.retrbinary
处缺少空格:(我也更喜欢with
语句):
ftp = ftplib.FTP('192.128.0.20', 'bingo', 'Password')
ftp.cwd('/')
filematch = '*.csv'
target_dir = '/home/toor/ringolist'
import os
for filename in ftp.nlst(filematch):
target_file_name = os.path.join(target_dir, os.path.basename(filename))
with open(target_file_name ,'wb') as fhandle:
ftp.retrbinary('RETR %s' % filename, fhandle.write)