python腳本:計算某個目錄下Code行數

簡介

用python腳本,計算給定目錄下的,所有C/C++代碼的行數。
運行平臺:CentOS 6.3

代碼

#! /usr/bin/python

'''
     File    : CodeLine.py
     Author  : HCLAC
     E-Mail  : [email protected]
'''

import sys, os

# global variable
extens  = [".c", ".cpp", ".hpp", ".h"]
linesCount = 0
filesCount = 0

def funCount(dirName):
    global extens, linesCount, filesCount
    for root, dirs, fileNames in os.walk(dirName):
        for f in fileNames:
            fname = os.path.join(root, f)
            try :
                ext = f[f.rindex('.'):]
                if(extens.count(ext) > 0):
                    print 'support'
                    filesCount += 1
                    print fname
                    l_count = len(open(fname).readlines())
                    print fname,": ",l_count
                    linesCount += l_count
                else:
                    print ext, ":not support"
            except:
                print "Error occur!!!"
                pass

#main
if len(sys.argv)> 1:
    for m_dir in sys.argv[1:]:
        print m_dir
        funCount(m_dir)
else :
        funCount("./")

print "files count: ", filesCount
print "lines count: ", linesCount

raw_input("Press Enter to continue")

運行結果

運行結果

變量說明

  1. 普通變量
    linesCount = 0:直接定義,不用寫類型名稱,python自動識別是字符、字符串、整數、浮點數。
  2. 數組
    extens = [“.c”, “.cpp”, “.hpp”, “.h”]:定義字符串數組,數組名稱爲extens,數據定義在[]之間,用”“包含每個數據,用”,”分割數據。
    對數組的操作:
    • extens[-1]:數組的負索引,表示.h
    • extens[1:3]:對數組分片,顯示.cpp .hpp,不包含第4個元素
    • extens.append(“.py”):從後面添加新數據。
    • extens.insert(2, “.py”):在第二個數據之後添加新數據。
    • extens.extend([“.py”, “.o”, “.a”]):從後面添加多個新數據。
    • extens.index(“.h”):在數組中搜索元素。
    • “.h” in extens:判斷是否在數組中,是返回True
    • extens.remove(“.h”):刪除元素。
    • extens.pop():從後面刪除一個元素。
    • extens+=”.txt”:從後面添加新元素。

代碼說明

主要思路:
從當前目錄遍歷所有文件夾,找到後綴是.h,.hpp,.c,.cpp的文件,打開文件,獲取行數,加起來就是總行數。
- for root, dirs, fileNames in os.walk(dirName):使用os.walk函數,遍歷dirName的目錄下的所有文件夾和文件,分別保存在dirs和fileNames變量中,這兩個變量都是list類型的,root保存着當前目錄的路徑。
- for f in fileNames:遍歷fileNames列表,將文件名稱保存在f變量中。
os.path.join(first, second):將first的字符串和second的字符串串聯起來,返回給另外一個變量
- l_count = len(open(fname).readlines()):使用open函數打開文件,readlines()函數獲取文件代碼行列表,len()獲取列表的個數。

注意

for,if,else,def等關鍵字後記得添加冒號:

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