from ftplib import FTPclass DirEntry: def __init__(self, line): self.parts = line.split(None, 8) def isvalid(self): return len(self.parts) >= 6 def gettype(self): return self.parts[0][0] def getfilename(self): if self.gettype() != 'l': return self.parts[-1] else: return self.parts[-1].split(' -> ', 1)[0] def getlinkdest(self): if self.gettype() == 'l': return self.parts[-1].split(' -> ', 1)[1] else: raise RuntimeError, "getlinkdest() called on non-link item"class DirScanner(dict): def addline(self, line): obj = DirEntry(line) if obj.isvalid(): self[obj.getfilename()] = objf = FTP('ftp.kernel.org')f.login()f.cwd('/pub/linux/kernel')d = DirScanner()f.dir(d.addline)print "%d entries:" % len(d.keys())for key, value in d.items(): print "%s: type %s" % (key, value.gettype())f.quit()
Name (required)
email (will not be published) (required)
Website