第 0007 題:有個目錄阶淘,里面是你自己寫過的程序愈涩,統(tǒng)計一下你寫過多少行代碼蚌本。包括空行和注釋,但是要分別列出來塞耕。
答案
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文件的代碼行數(shù)蚀腿, 注釋數(shù), 空格數(shù)
def get_rows(file):
with open(file, encoding='utf8') as f:
lines = f.readlines()
rows = len(lines) # 代碼總行數(shù)
vuui = 0 # 注釋數(shù)
space = 0 # 空格數(shù)
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 # 總代碼數(shù)
all_vuui = 0 # 總注釋數(shù)
all_space = 0 # 總空格數(shù)
for file in file_list:
data = get_rows(file)
print('正在計算行數(shù):' + file)
rows = data.get('rows')
vuui = data.get('vuui')
space = data.get('space')
all_rows += rows
all_vuui += vuui
all_space += space
print('所有代碼的行數(shù):{}\n其中包括的注釋行數(shù):{}\n其中空格行數(shù):{}'.format(all_rows, all_vuui, all_space))
path = r'C:\Users\L\Desktop\vue-blog\backend'
run(path=path)
得到結(jié)果如下