File: wcall_visitor.py

##################################
# count lines in all source files
# in tree; visitor class version
##################################

import sys
from wcall import allExts, makeSums
from PP2E.PyTools.visitor import FileVisitor

class WcAll(FileVisitor):
    def __init__(self):
        FileVisitor.__init__(self)
        self.allLines = self.allFiles = 0
        self.allSums  = makeSums(allExts)

    def sum(self, fname, ext):
        print fname
        lines = open(fname).readlines()
        self.allFiles = self.allFiles + 1                 # or allFiles += 1
        self.allLines = self.allLines + len(lines)
        self.allSums[ext] = self.allSums[ext] + 1

    def visitfile(self, filepath):
        self.fcount = self.fcount + 1
        for ext in allExts:
            if filepath[-len(ext):] == ext:               # or .endswith(ext)
                self.sum(filepath, ext)
                break

if __name__ == '__main__':
    walker = WcAll()
    walker.run(sys.argv[1])
    print 'Visited %d files and %d dirs' % (walker.fcount, walker.dcount)
    print '-'*80
    print 'Files=>', walker.allFiles, 'Lines=>', walker.allLines
    print walker.allSums



[Home page] Books Code Blog Python Author Train Find ©M.Lutz