• Python 统计代码量


     1 #统计代码量,显示离10W行代码还有多远
     2 #递归搜索各个文件夹
     3 #显示各个类型的源文件和源代码数量
     4 #显示总行数与百分比
     5 
     6 import os
     7 import easygui as g
     8 
     9 #查找文件
    10 def find_file(file_path,target):
    11     os.chdir(file_path)
    12     all_files=os.listdir(os.curdir)
    13     for each in all_files:
    14         #print(each)
    15         fext=os.path.splitext(each)[1]
    16         if fext in target:
    17             lines=calc_code(each) #统计行数
    18             #print("文件%s的代码行数是%d"%(each,lines))
    19             #统计文件数
    20             try:
    21                 file_list[fext]+=1
    22             except KeyError:
    23                 file_list[fext]=1
    24             #统计源代码行数
    25             try:
    26                 source_list[fext] += lines
    27                 #print(source_list[fext])
    28             except KeyError:
    29                 source_list[fext] = lines
    30                 #print(source_list[fext])
    31 
    32 
    33 
    34         if os.path.isdir(each):
    35             find_file(each,target) # 递归调用
    36             os.chdir(os.pardir) #返回上层目录
    37 
    38 
    39 #统计行数
    40 def calc_code(file_name):
    41     lines=0
    42     with open(file_name,encoding='gb18030',errors='ignore') as f:
    43         print("正在分析文件%s..."%file_name)
    44         try:
    45             for eachline in f:
    46                 lines += 1
    47         except UnicodeDecodeError:
    48             pass
    49         print("文件%s分析完毕,包含代码行%d." %(file_name,lines))
    50     return lines
    51 
    52 
    53 #显示结果
    54 def show_result(start_dir):
    55     lines=0
    56     total=0
    57     text=''
    58 
    59     for i in source_list:
    60         lines=source_list[i]
    61         total+=lines
    62         text+='%s源文件%d个,源代码%d行
    '%(i,file_list[i],lines )
    63 
    64     title='统计结果'
    65     msg='目前代码行数:%d
    完成进度:%.2f%%
    距离十万行代码还差%d行'%(total,total/1000,100000-total)
    66     g.msgbox(msg,title,text)
    67 
    68 #file_path=input("要查找的路径; ")  # C:\Users\54353\PycharmProjects\untitled
    69 target=['.py','.java','.c','.cc','.cpp']  #定义需要查找的源文件类型
    70 file_list={}
    71 source_list={}
    72 g.msgbox('请打开您的文件夹','统计代码量')
    73 path=g.diropenbox('请选择您的代码库:')
    74 
    75 find_file(path,target)
    76 show_result(path)
  • 相关阅读:
    React源码解析-从头写一个React的难点与思路
    2017前端书籍推荐——如何一步步看懂框架源码
    React-ReactElement解析
    新手初学WPF本地化
    IOS 关闭键盘的几种方式
    专注技术
    test
    盒子模型
    CSS选择器详解(二)通用选择器和高级选择器
    CSS选择器详解(一)常用选择器
  • 原文地址:https://www.cnblogs.com/scios/p/8386618.html
Copyright © 2020-2023  润新知