📂code
🔖python
2020-09-06 20:41阅读: 346评论: 1推荐: 0

[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 中国大陆许可协议进行许可。

posted @   NoNoe  阅读(346)  评论(1编辑  收藏  举报
点击右上角即可分享
微信分享提示
💬
评论
📌
收藏
💗
关注
👍
推荐
🚀
回顶
收起
  1. 1 Relaxロウきゅーぶ 渡辺剛
  2. 2 カントリーマーチ 栗コーダーカルテット
  3. 3 BGM-M7 かみむら周平
  4. 4 八百万の風が吹く Foxtail-Grass Studio
  5. 5 雲流れ Foxtail-Grass Studio
  6. 6 Melody 梶浦由記
  7. 7 ロック风アレンジ Angel Beats
  8. 8 ヨスガノソラ メインテーマ -遠い空へ- Bruno Wen-li
  9. 9 Servante du feu Matthieu Ladouce
  10. 10 Lost my pieces (Piano Ver.) 橋本由香利
  11. 11 潮鳴り 折戸伸治
  12. 12 雪風 Foxtail-Grass Studio
  13. 13 Bloom of Youth 清水淳一
  14. 14 落月随山隐 饭碗的彼岸,夜莺与玫瑰
  15. 15 Autumn Journey Eric Chiryoku
  16. 16 Alpha C418
  17. 17 Money之歌 神楽Mea
カントリーマーチ - 栗コーダーカルテット
00:00 / 00:00
An audio error has occurred, player will skip forward in 2 seconds.

暂无歌词