import
os
import fnmatch
def Walk(root = ' . ' , recurse = True, pattern = ' * ' ):
"""
Generator for walking a directory tree.
Starts at specified root folder, returning files
that match our pattern. Optionally will also
recurse through sub-folders.
"""
for path, subdirs, files in os.walk(root):
for name in files:
if fnmatch.fnmatch(name, pattern):
yield os.path.join(path, name)
if not recurse:
break
def LOC(root = '' , recurse = True):
"""
Counts lines of code in two ways:
maximal size (source LOC) with blank lines and comments
minimal size (logical LOC) stripping same
Sums all Python files in the specified folder.
By default recurses through subfolders.
"""
count_mini, count_maxi = 0, 0
for fspec in Walk(root, recurse, ' *.py ' ):
skip = False
for line in open(fspec).readlines():
count_maxi += 1
line = line.strip()
if line:
if line.startswith( ' # ' ):
continue
if line.startswith( ' """ ' ):
skip = not skip
continue
if not skip:
count_mini += 1
return count_mini, count_maxi
import fnmatch
def Walk(root = ' . ' , recurse = True, pattern = ' * ' ):
"""
Generator for walking a directory tree.
Starts at specified root folder, returning files
that match our pattern. Optionally will also
recurse through sub-folders.
"""
for path, subdirs, files in os.walk(root):
for name in files:
if fnmatch.fnmatch(name, pattern):
yield os.path.join(path, name)
if not recurse:
break
def LOC(root = '' , recurse = True):
"""
Counts lines of code in two ways:
maximal size (source LOC) with blank lines and comments
minimal size (logical LOC) stripping same
Sums all Python files in the specified folder.
By default recurses through subfolders.
"""
count_mini, count_maxi = 0, 0
for fspec in Walk(root, recurse, ' *.py ' ):
skip = False
for line in open(fspec).readlines():
count_maxi += 1
line = line.strip()
if line:
if line.startswith( ' # ' ):
continue
if line.startswith( ' """ ' ):
skip = not skip
continue
if not skip:
count_mini += 1
return count_mini, count_maxi