Python:nlst错误。空目录

时间:2014-02-27 14:46:53

标签: python ftplib

我有一个从ftp服务器下载zip文件的代码。当我尝试捕获空目录上的文件时,代码失败。 当我在目录中有文件时,它工作正常。

当目录为空时会出现这些错误。

File "/usr/lib/python2.5/ftplib.py", line 459, in nlst
    self.retrlines(cmd, files.append)
  File "/usr/lib/python2.5/ftplib.py", line 421, in retrlines
    return self.voidresp()
  File "/usr/lib/python2.5/ftplib.py", line 221, in voidresp
    resp = self.getresp()
  File "/usr/lib/python2.5/ftplib.py", line 216, in getresp
    raise error_perm, resp
ftplib.error_perm: 550 No files found.

我尝试使用下一个代码修复此错误,但它不起作用。它不断发生。 如果有人可以帮我解决问题,我会很感激

CODE

try:
    fileList = s.nlst()
except ftplib.error_perm, resp:
    if str(resp) == '550 No files found':
        print 'Directory is empty.'
else:
    raise

仍然会导致

File "/root/folder/ftp.py", line 151, in download fileList = s.nlst() 
File "/usr/lib/python2.5/ftplib.py", line 459, in nlst self.retrlines(cmd, files.append) 
File "/usr/lib/python2.5/ftplib.py", line 421, in retrlines return self.voidresp() 
File "/usr/lib/python2.5/ftplib.py", line 221, in voidresp resp = self.getresp() 
File "/usr/lib/python2.5/ftplib.py", line 216, in getresp raise error_perm, resp
ftplib.error_perm: 550 No files found. 

1 个答案:

答案 0 :(得分:0)

我知道这已经死了,但是我发现了这个,因为我遇到了同样的问题。这是我使用的解决方法:

def handle_folders(item):

    global fldrs
    temp = item.split()
    if item.startswith('d') and temp[4] != "512":
        fldrs.append(myFldr + item[54:] + "/")

ftp.cwd(myFldr)
ftp.retrlines('LIST', handle_folders)
setupDir = fldrs

其中myFldr是路径,您可以过滤掉所有不属于文件夹的内容和任何空的内容。在我的代码的其他地方,我遍历setupDir并使用ftp.nlst()获得文件列表,尽管您也可以使用retrlines获取该列表。