[python] 简易代码量统计脚本
2020-12-8 更新,新增忽视注释行、空行、单字符行的功能
代码
"""
递归统计某个目录下给定类型的代码文件总行数
但实际使用中由于只能通过后缀区分,总会有一些问题造成误差(库、二进制文件等)
支持忽视注释、空行、单字符行
将所有包含要计算后缀的文件扔进同一个文件夹然后运行该文件,注意去掉库文件
"""
import os
from rmComment import parse_file
def calc_file(file_path):
"""统计单文件的行数"""
file_str = parse_file(file_path, output='string')
count = 0
for line in file_str.split('\n'):
# 有效避免各种编码问题
count += len(line.strip()) > 1
# 不计算空行、单字符行
return count
def calc_folder(path, types=('py', )):
""""统计文件夹中特定类型文件各自的总行数"""
count_dict = dict.fromkeys(types, 0)
for dirpath, _, filenames in os.walk(path):
for name in filenames:
ext = name.rsplit('.')[-1]
if ext not in types:
continue
filepath = os.path.join(dirpath, name)
count_dict[ext] += calc_file(filepath)
return count_dict
if __name__ == '__main__':
folder = r'H:\folder'
file_types = ('wxml', 'vue', 'py', 'cpp', 'wxss', 'css', 'c', 'js', 'html', 'less', )
total = 0
for ext, cnt in calc_folder(folder, file_types).items():
total += cnt
print(f'{ext}文件总行数:{cnt}')
print(f'{folder}文件夹内代码总行数:{total}')
input()
使用
- 修改入口的folder及file_types变量运行即可
- 其中rmComment用于去除代码注释:rmComment.py
输出示例
js文件总行数:1601
vue文件总行数:451
html文件总行数:0
wxml文件总行数:707
css文件总行数:0
wxss文件总行数:1186
less文件总行数:1128
py文件总行数:87
D:\doneCode文件夹内代码总行数:5160
本文作者:心有所向,日复一日,必有精进
本文链接:https://www.cnblogs.com/Stareven233/p/13623507.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步