ftplib.error_perm:500不知道从ftp下载文件

时间:2014-07-14 09:13:45

标签: python

我是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

1 个答案:

答案 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)