Python统计项目代码行数

# -*- coding: utf-8 -*-
"""
Created on Sat Mar 28 10:06:36 2020

@author: Hi Daniel
"""

import os 
import time

# 统计项目代码数量
class TotalCodeLines():
    def __init__(self, basedir,filetype):
        self.basedir = basedir
        self.filelists = []
        self.filetype = filetype
        
    #遍历文件, 递归遍历文件夹中的所有
    def readfile(self, basedir, filetype):
        global filelists
        for parent,dirnames,filenames in os.walk(self.basedir):
            for filename in filenames:
                ext = filename.split('.')[-1]
                #只统计指定的文件类型,略过一些log和cache文件
                if ext in self.filetype:
                    self.filelists.append(os.path.join(parent,filename))
        return self.filelists
    
    #统计一个文件的行数
    def countline(self, fname):
        count = 0
        for file_line in open(fname,'r',encoding = 'utf-8').readlines():
            if file_line != '' and file_line != '\n': #过滤掉空行
                count += 1
        print(fname + '----'+'{0} {1}'.format(count,'lines'))
        return count
    
    # 统计所有文件的代码行数
    def alllines(self, filelists):
        totalline = 0
        for filelist in filelists:
            totalline = totalline + self.countline(filelist)
        return totalline
    
    
if __name__ == '__main__' :
    start_time  = time.time()    
    # 需要统计的文件夹或者文件
    basedir = r'Your Project Path'   
    # 指定想要统计的文件类型
    filetype = ['m', 'py']
    # 调用类
    totalline = TotalCodeLines(basedir, filetype)
    file = totalline.readfile(basedir,filetype)
    totalline = totalline.alllines(file)
    print('total lines: {0} {1}'.format(totalline,'lines'))
    
    end_time = time.time()  
    print('Done! Cost Time: %0.2f seconds' % (start_time - end_time))

【参考】Python 统计代码的行数,Python脚本 统计代码

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章