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