File: wcall.py

##################################
# count lines in all source files
# in tree; os.path.walk version
##################################

import os, sys
allLines = allFiles = 0
allExts  = ['.py', '.pyw', '.cgi', '.html', '.c', '.cxx', '.h', '.i']

def makeSums(keys): 
    sums = {}
    for key in keys: sums[key] = 0
    return sums
allSums = makeSums(allExts)

def sum(dir, file, ext):
    global allFiles, allLines
    print file
    fname = os.path.join(dir, file)
    lines = open(fname).readlines()
    allFiles = allFiles + 1
    allLines = allLines + len(lines)
    allSums[ext] = allSums[ext] + 1                   # or += 1

def wc(ignore, dir, fileshere):
    for file in fileshere:
        for ext in allExts:
            if file[-len(ext):] == ext:               # or .endswith()
                sum(dir, file, ext)
                break

if __name__ == '__main__':
    os.path.walk(sys.argv[1], wc, None)               # cmd arg=root dir
    print '-'*80
    print 'Files=>', allFiles, 'Lines=>', allLines
    print allSums



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