#!/usr/bin/python3 # ==================================================================== # PY file line counter # ==================================================================== import os import re import sys import user_interface as ui blank_line_count = 0 code_line_count = 0 comment_line_count = 0 function_count = 0 read_line_count = 0 file_type_regexp = re.compile(r'\.py$',re.IGNORECASE) function_regexp = re.compile(r'^def ') # -------------------------------------------------------------------- # ---- main # -------------------------------------------------------------------- while True: print() fn = ui.get_user_input('Enter PY file name: ') if not fn: ##print('\nExit Program\n') ##sys.exit() break if not re.search(file_type_regexp,fn): print('\nfile is not a PY file - program exit\n') sys.exit() with open(fn,'r') as fin: for line in fin: read_line_count += 1 line = line.strip() if line == '': blank_line_count += 1 continue if line[0] == '#': comment_line_count += 1 continue if re.search(function_regexp,line): function_count += 1 code_line_count += 1 print() print(f'---- file stats --------------------------') print(f'file name : {os.path.basename(fn)}') print(f'lines read : {read_line_count:<4}') print(f'function count: {function_count:<4}') pcent = round((blank_line_count/read_line_count)*100,1) print(f'blank lines : {blank_line_count:<4} %{pcent}') pcent = round((code_line_count/read_line_count)*100,1) print(f'code lines : {code_line_count:<4} %{pcent}') pcent = round((comment_line_count/read_line_count)*100.0,1) print(f'comment lines : {comment_line_count:<4} %{pcent}') print() print()