• [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('
    '):
            # 有效避免各种编码问题
            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

  • 相关阅读:
    KETTLE集群搭建
    初识spark
    利用python操作mrjob实例---wordcount
    hive 优化 (转)
    hive权限管理
    hadoop常用操作命令
    hive的分桶
    Hive HQL基本操作
    hadoop--hive数据仓库
    Hive配置项的含义详解
  • 原文地址:https://www.cnblogs.com/Stareven233/p/13623507.html
Copyright © 2020-2023  润新知