2019年7月28日 星期日

如何用 Python 程式計算專案原始碼 (source code) 的總行數(line count) ?

        常常,當我們埋頭開發一個程式專案時,隨著時間的推移,檔案不斷變多,行數不斷增加,到後來也只知道這個專案很大,但是,當有人問你整個專案究竟有幾行程式碼時,你就呆住了,究竟有幾行啊?或許你會說,打開每個檔案,看看最後一行的行號,然後再把每個檔案的行數加總就可以了,哇,聽起來很簡單啊,確實,當你的專案只有幾個檔案時,這不成問題,但是,當你的專案有幾十個檔案(或幾百個)時,那你就累了。

        事實上,不需要這麼累,用python寫一個計算專案程式大小的程式很簡單,幾行就可以搞定,而且可以一直使用下去,從此以後,當老闆或客戶問你專案程式碼總共有幾行時,你就不需支支吾吾,被這麼簡單的問題逼死了,哈哈哈。

以下就是完整程式碼:

import os
import operator

source_path = 'c:/my_project'   #放置你的專案的目錄
line_count = 0
name_size = {}

#get all files in source path
os.chdir(source_path)
for _root, _dir, _files in os.walk(os.getcwd()):
    print('\n'+_root)
    for f in _files:
        try:
            f_type = f.split('.')[1]
            if  f_type in ['c', 's', 'h']:
                print('  '+f, end='')
                file = open(_root+'/'+f, 'r')
                c = 0
                for line in file:
                    #print(line)
                    c += 1
                    line_count += 1
                file.close()
                name_size[f] = c
                print(' ('+str(c)+')')
        except:
            pass

print('\n\n\ntotal lines =', line_count)

''' 如果你要看檔案大小排名,就打開以下程式碼
result_dic = sorted(name_size.items(), key=operator.itemgetter(1), reverse=True)    
for x in result_dic:
    print(x)
'''