zoukankan      html  css  js  c++  java
  • Python小工具:统计代码行数

    本身代码难度不大,就是一个心血来潮做的小玩意

    功能介绍

    1. 实现对于指定的后缀文件进行行数统计
    2. 可以忽略指定的文件夹,对于一些IDE自动生成的代码可以进行忽略(默认忽略二进制文件)
    3. 对于文件创建时间进行统计

    Todo_List

    1. 把忽略文件夹的功能支持正则,现在的忽略功能有点僵硬
    2. 对于结果统计有更好的数据统计页面,比如画出一个饼图或柱状图之类的

    代码:

    import os,sys,time
    def get_year(now):
        filemt= time.localtime(os.stat(now).st_mtime) # 获取文件创建时间
        ModifiedTime=time.strftime("%Y-%m-%d",filemt)
        y=ModifiedTime[:4]
        return y
    def count(path,suffix,ignore,statistics,years):
        cnt=0
        for fn in os.listdir(path):
            now = path+fn # 文件路径
            # print(fn)
            if os.path.isdir(now):
                # print(now+'\')
                if now+'\' in ignore:
                    # print('ignore=',now+'\')
                    continue
                tmp,years=count(now+'\',suffix,ignore,statistics,years)
                cnt = cnt + tmp
            else:
                filename,type=os.path.splitext(now)
                if type in suffix:
                    # print(filename,type)
                    try:
                        num = len(open(now, 'r').readlines())# 当前文件的行数
                        y=get_year(now) # 获取文件创建时间(年)
                        # print(now,y)
                        years[y] = years[y]+num
                        statistics[type] = statistics.get(type,0) + num
                    except UnicodeDecodeError:# 判断二进制文件
                        pass
                    else:
                        cnt = cnt + num
        return cnt,years
    if __name__ == '__main__':
        ignore=['D:\code\python\pygame\pygame-samples-master\',
                'D:\code\python\Lo-runner-master\',
                'D:\code\Django\venv\',
                'D:\code\eclipse-workspace\',
                ]
        suffix=['.cpp','.c','.py','.java']
        years={'2016':0,'2017':0,'2018':0}
        src = 'D:\code\'
        statistics=dict()
        ans,years = count(src,suffix,ignore,statistics,years)
        print(src,'下总代码行数为:',ans)
        print('语言统计情况:')
        for key in statistics.keys():
            print(key,':',statistics[key])
        print('年份统计情况:')
        for key in years.keys():
            print(key,':',years[key])
    

  • 相关阅读:
    用socket方式传输Image和Sound文件
    maven常用构建命令
    文件大小转换成可显示的Mb,Gb和kb方法
    关于<img>标签与文字垂直居中
    socket编程---一个简单例子
    Java实现RC4加解密
    build path功能详解
    struts2中改变struts.xml默认路径
    OpenSessionInViewFilter 的配置及作用
    web.xml元素介绍
  • 原文地址:https://www.cnblogs.com/SCaryon/p/10132794.html
Copyright © 2011-2022 走看看