import os, os.path SOURCE_EXT = [".cs"] extensions = {} sourceFiles = {} for root, dirs, files in os.walk("."): for filename in files: name, ext = os.path.splitext(filename) # count files by extension if ext not in extensions: extensions[ext] = 0 extensions[ext] += 1 # count lines in selected files if ext in SOURCE_EXT: path = os.path.join(root, filename) lines = list(open(path, "r")) lineCount = len(lines) semicolonCount = len([l for l in lines if l.strip() and l.strip()[-1] == ";"]) sourceFiles[path] = (lineCount, semicolonCount) extlist = extensions.items() extlist.sort(key=lambda v: v[1]) lineCount = sum([file[0] for file in sourceFiles.values()]) semicolonCount = sum([file[1] for file in sourceFiles.values()]) print "Solutions: ", extensions[".sln"] print "Projects: ", extensions[".csproj"] print "Source files: ", len(sourceFiles) print "Line count: ", lineCount print "Semicolon count: ", semicolonCount