我有一个从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.
我尝试使用下一个代码修复此错误,但它不起作用。它不断发生。 如果有人可以帮我解决问题,我会很感激
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.
答案 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获取该列表。