-
Notifications
You must be signed in to change notification settings - Fork 4
/
number_lines.py
41 lines (35 loc) · 1.23 KB
/
number_lines.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
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='PythonProgram/', 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'):
print(fspec)
skip = False
for line in open(fspec).readlines():
count_maxi += 1
line = line.strip()
if line:
if not skip:
count_mini += 1
return count_mini, count_maxi
print("Number of lines in PythonProgram: {0[0]} minimum, {0[1]} maximum".format(LOC()))