码农经常会被问到,一共写过多少行代码?现在,给定一个包含py 文件的目录,统计该目录中所有源码文件的总行数,并分别列出注释行、空行与有效代码的行数。请注意,为了简化问题,我们暂不考虑多行注释,有兴趣的同学可以自己尝试思考多行注释下的代码统计。
import os
import re
program_dir = r'.' # 设定统计源码所在的目录(.表示当前目录)
blank_lines = 0 # 初始化统计变量
remark_lines = 0
affect_lines = 0
total_lines = 0
count_files = 0
for root, dirs, files in os.walk(program_dir):
for every_file in files:
file_root = os.path.join(root, every_file)
open_file = open(file_root, 'r')
try:
file_content = open_file.readlines() # 按照行读取文件
except:
file_content = []
open_file.close()
print('正在统计:'+str(count_files), file_root)
count_files += 1
for line in file_content:
first_char = re.search(r'(?<=\s)*\S', line) # 匹配每行第一个非空字符
if not first_char: # 判断并统计
blank_lines += 1
elif first_char.group() == '#':
remark_lines += 1
else:
affect_lines += 1
total_lines += 1
print('有效行:', affect_lines)
print('注释行:', remark_lines)
print('空白行:', blank_lines)
print('总行数:', total_lines)