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腳本 統計代碼

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