直接看代码,只需要pathlib库,感兴趣的可以好好学学。
from pathlib import Path
#要计算代码行数的目录-->改成你要统计的目录
root_path='E:\game_ai_sdk_1031'
#不统计目录黑名单,注意目录的特征字符串-->改成你不统计的子目录特征
black=['AI_SDK','Modules','build']
#统计文件后缀白名单-->改成你要统计的文件后缀
white_suffix=['.py','.c','.h','.cpp']
#递归寻找子目录文件
def find_target_files(cur_path,finds,tags=white_suffix):
path=Path(cur_path)
for item in path.iterdir():
blk=False
for bb in black:
if bb in str(item):
blk=True
break
if blk:
continue
if item.is_dir():
find_target_files(item,finds,tags)
else:
if item.suffix in tags:
finds.append(item)
def cal_lines():
finds=[]
find_target_files(root_path,finds)
print(len(finds))
print(finds)
res={ws:0 for ws in white_suffix}
for item in finds:
try:
with open(item, encoding='utf8') as fp:
txt=fp.readlines()
tmp=[]
for tt in txt:
#剔除没有代码的行
tt=tt.strip()
if len(tt)!=0:
tmp.append(tt)
res[item.suffix]+=len(tmp)
except Exception as e:
print(e.args)
print('code all Lines is:',res)
if __name__ == '__main__':
cal_lines()