第 0007 题:有个目录,里面是你自己写过的程序,统计一下你写过多少行代码。包括空行和注释,但是要分别列出来。
答案
import os
# 查找目录下所有文件夹中的py文件
def get_all_file(path):
file_list = []
files = os.listdir(path)
for file in files:
# 判断是否是文件夹
if os.path.isdir(path + '\\' + file):
print('处理文件夹:' + file)
file_list = file_list + get_all_file(path + '\\' + file)
else:
if os.path.splitext(file)[1] == '.py':
file_list.append(path + '\\' + file)
print('添加文件:' + file)
return file_list
# 计算一个py文件的代码行数, 注释数, 空格数
def get_rows(file):
with open(file, encoding='utf8') as f:
lines = f.readlines()
rows = len(lines) # 代码总行数
vuui = 0 # 注释数
space = 0 # 空格数
for line in lines:
if line == '\n':
space += 1
if line[0] == '#':
vuui += 1
data = {
'rows': rows,
'vuui': vuui,
'space': space
}
return data
def run(path):
file_list = get_all_file(path)
all_rows = 0 # 总代码数
all_vuui = 0 # 总注释数
all_space = 0 # 总空格数
for file in file_list:
data = get_rows(file)
print('正在计算行数:' + file)
rows = data.get('rows')
vuui = data.get('vuui')
space = data.get('space')
all_rows += rows
all_vuui += vuui
all_space += space
print('所有代码的行数:{}\n其中包括的注释行数:{}\n其中空格行数:{}'.format(all_rows, all_vuui, all_space))
path = r'C:\Users\L\Desktop\vue-blog\backend'
run(path=path)
得到结果如下