Parse return value from dir() function : Ftp : Network PYTHON TUTORIALS


PYTHON TUTORIALS » Network » Ftp »

 

Parse return value from dir() function


from ftplib import FTP

class 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()] = obj

f = 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()



Leave a Comment / Note


 
Verification is used to prevent unwanted posts (spam). .


PYTHON TUTORIALS

 Navioo Network
» Ftp