1. 程式人生 > >統計程式碼行數的python小工具

統計程式碼行數的python小工具

一個用python實現的統計程式碼行數的小工具

先立個flag, 新年新目標,希望2018年程式碼行數可以寫到五萬行。

實現功能

  • 計算出某一目錄以及子目錄下程式碼檔案的行數
  • 在計算程式碼的過程中,只對標準命名的檔案進行統計,如[檔名.檔案型別]
  • 排除了以“#”開頭的包含檔案,巨集定義等,如#include, #define, #pragma等
  • 排除了c,cpp檔案中的“//”, “//”等的註釋
  • 排除了python檔案中import, from 等開頭的匯入

使用方法

新建countLines.py檔案,複製程式碼到檔案中,將其放在想計算行數的程式碼目錄下,直接使用Python執行即可算出該目錄以及所有子目錄下程式碼檔案的行數。

  1. 將該python檔案命名為countLines.py,放到想計算程式碼行數的檔案目錄下
    檔案目錄
  2. 其中helloworld.c檔案內容如下:
    helloworld.c檔案內容
  3. 用python.exe直接開啟該檔案或者使用python countLines.py,執行檔案即可。
    計算結果
    我們可以看到,統計程式碼行的時候我們排除了兩個空行以及開頭的包含檔案行,因此有效程式碼行為5行

程式碼實現

#!/usr/bin/env python
# -- coding: utf-8 --
# @Time    : 2018/3/5 13:55
# @Author  : likewind
# @mail    : [email protected]
# @File : countLines.py # @Software: sky-studio.cn import os ''' 返回每個檔案行數,其中行數不包括以“#”開頭的包含檔案,巨集定義等, 排除了c,cpp檔案中的“//”, “/*...*/”等的註釋, 排除了python檔案中import, from 等開頭的匯入 ''' def get_lines(file_name): f = open(file_name) #flag用於處理c,cpp中“/*...*/”多行註釋 flag = False count = 0 while True: #讀取檔案並去除開頭的空格,製表符
line = f.readline() line = line.lstrip(' \t') if not line: break #如果該行有“#”, “import”等打頭的字元,忽略該行 if flag == False: if line[0:1] == "#" or line[0:6] == "import" or line[0:4] == "from" or line == "\n" or line[0:2] == "//": continue #如果該行存在“/*”並且不存在“*/”,表明多行註釋未在一行結束,flag=True if line.find("/*") != -1 : if line.find("*/") != -1: continue else: flag = True continue #如果flag=True,表明處於多行註釋中,判斷是否有“*/”結尾 if flag == True : if line.find("*/") != -1: flag = False if line[-2:] != "*/": count = count+1 continue #排除以上條件後,行數增加一 count = count+1 f.close() return count ''' 計算該檔案目錄下所有符合條件的行數 ''' def count_lines(file_dir): #total_lines表示總行數,file_nums表示總檔案數 total_lines = 0 file_nums = 0 for root, dirs, files in os.walk(file_dir): for file in files: #不計算本檔案的行數 if file == "countLines.py": continue #只計算規範命名檔案, 如[檔名.檔案型別] file_type = file.split('.') if len(file_type) > 1 : #如果想計算其他型別的檔案,可以在這裡進行修改 if file_type[1] not in ["py", "c", "cc", "cpp", "h"]: continue else: continue file_name = root +"\\" + file lines = get_lines(file_name) total_lines = total_lines + lines print file_name + " contains lines : " + repr(lines) file_nums = file_nums + 1 #輸出結果 print "------------------------------------" print "Total Files : " + repr(file_nums) print "Total lines : " + repr(total_lines) print "------------------------------------" if __name__ == '__main__': cur_path = os.path.split(os.path.realpath(__file__))[0] count_lines(cur_path) raw_input("Press any key to exit...")

相關推薦

Python工具統計程式碼

本身程式碼難度不大,就是一個心血來潮做的小玩意 功能介紹 實現對於指定的字尾檔案進行行數統計 可以忽略指定的資料夾,對於一些IDE自動生成的程式碼可以進行忽略(預設忽略二進位制檔案) 對於檔案建立時間進行統計 Todo_List 把忽略資料夾的功能支援正則,現在的忽略

統計程式碼python工具

一個用python實現的統計程式碼行數的小工具 先立個flag, 新年新目標,希望2018年程式碼行數可以寫到五萬行。 實現功能 計算出某一目錄以及子目錄下程式碼檔案的行數 在計算程式碼的過程中,只對標準命名的檔案進行統計,如[檔名.檔案型別] 排除

統計專案的程式碼(python處女作)

前些日子做了個小專案,特別想知道自己編了多少的程式碼量,我就想弄個小程式統計一下程式碼行,想起曾經統計程式碼行用的方法是全部匯入到Eclipse專案中,然後用正則表示式匹配。eclipse -> search -> file -> 勾選regular ex

一個統計PHP程式碼程式碼

想統計一下專案中一共有多少行程式碼,結果沒找到什麼好的工具,就自己寫了一個。 效率不怎麼樣。 <?php /** * Created by PhpStorm. * User: luyanfe

用Eclipse 統計程式碼技巧

今天公司SQA問我目前專案程式碼行數有多少,我當時就是想,以前好像寫過類似的統計工具但是一時又找不到 公司網路又不能下載,所以想想eclipse是不是又類似功能,找了下沒有,但突然一想有一個轉彎方法:統計工程裡面的\n個數 1. 按 CTRL+H 開啟查詢對話方塊 選擇fi

如何在Eclipse統計程式碼

使用Eclipse可以方便的統計工程或檔案的程式碼行數,方法如下:  1.點選要統計的專案或資料夾,在選單欄點選Search,然後點選File...  2.選中正則表示式(Regular expression),並在搜尋文字框輸入\n  3.在檔名中輸入*.java  4.在

Flask統計程式碼

流程:   1.獲取前端的檔案   2.判斷檔案是否zip檔案   3.解壓壓縮包並儲存   4.遍歷解壓後的資料夾   5.判斷檔案是否py檔案,將絕對路徑新增到列表   6.迴圈列表,排除註釋和空號,統計行數 from flask import Blueprint from flask

TFS 裡統計程式碼

****** Script for SelectTopNRows command from SSMS ******/ SELECT TeamProjectProjectNodeName 專案名稱 ,checkedinbyname 開發人員 ,SUM

iOS專案統計程式碼

很久沒更新了,今天學習了個新技能的,統計程式碼行數,直接用終端和命令列實現,簡單,閒暇時看看的,對幫助開發發用不大;1、開啟終端管理工具2、進入指定專案的根目錄下在終端裡輸入cd,然後打一個空格,再用滑鼠把專案拖進來就行了.比如:cd /Users/tcm/Desktop/s

VS2013 用正則表示式統計程式碼

公司 軟體申請 著作權 這鬼東西,所以在網上找了下統計方法,網上的正則表示式 (^:b*[^:b#/]+.*$)似乎不行,查了原因 去掉了了 : 號的匹配可行,具體如下: ^b*[^:b#/]+.*$

VS統計程式碼

按CTRL+SHIFT+F (Find in files),勾上支援正則表示式,然後輸入搜尋內容: ^:b*[^:b#/]+.*$ #開頭和/開頭或者空行都不計入程式碼量。如果需要只統計程式碼檔案的程式碼量,可以選擇查詢檔案的型別,比如什麼*.xml, *.resx….可以不檢查,只查*.cs,*.c,

maven編寫外掛——統計程式碼

前言   使用maven外掛可以將一些有意思的功能抽象成maven外掛服務,安裝到本地maven倉庫以後,可以很方便的使用功能,也可以在其他專案當中引用外掛,使用外掛功能。   下面完成統計目錄下包含的指定型別的檔案,以及該型別所有檔案的行數總和,可以用來統

在idea中統計程式碼

idea的外掛庫是灰常豐富的,統計程式碼行數可以用到外掛:Statistic。 1.CTRL+ALT+S(或者File→Settings),進入Plugins,點選Browse Repositories  2.搜尋Statistic,選擇安裝。(如果公司有限制網路,可

統計程式碼

svn diff -r 1022:1000 > /home/diff 先diff出兩個版本的diff檔案 sed '/\/\*/,/\*\//d' diff | grep "^+" | sed

使用VS2010統計程式碼

程式碼行數統計 VS2010中本身集成了非常強大的查詢功能,使用正則表示式可以非常快捷、準確的統計程式碼行數。 統計程式碼行數所用正則表示式: “^:b*[^:b#/]+.*$” 通過查詢的功能選項還可以限定查詢的檔案型別,進而對指定範圍的檔案進行統計。 其中“#開頭和

使用 cloc 統計程式碼

可能大家都知道用 `wc -l` 命令進行程式碼行數統計,但是它會將程式碼中的註釋、空行所佔用的文字行都統計在內。如果想檢視一個 tar 包或一個專案目錄中“實際”的程式碼行數並且不願意自己去寫一個指令碼來做此類工作,那麼可以考慮使用 cloc。 cloc 是一個 perl

Visual Studio2013統計程式碼

1. 在“解決方案資源管理器”中選擇你的專案的解決方案,然後按下Ctrl+Shift+F,彈出“查詢和替換”視窗。 2. 在彈出的“查詢和替換”視窗中,“查詢內容”輸入b*[^:b#/]+.*$,“

Python工具——統計資料夾下原始碼的

趁著熱情著,又趕了份統計原始碼的小工具 程式是統計java檔案的,以後有機會更新成統計各個原始碼版本的程式 統計目錄下每個檔案的總行數,正常行數,註釋行數,空白行數 和整個目錄下總的 這些行數。 程式執行後,自動在指定目錄生成一個result.txt檔案 同樣的利用

用shell實現一個指令碼,用來同來統計自己某個檔案下的程式碼,總的程式碼,總的註釋量,總的空量?支援遍歷查詢,支援軟連結查詢

[[email protected] yunwei]# cat sum_code_row_version1.4.sh #!/bin/bash # File Name: sum_code_row.sh # Author: Liwqiang # mail: [email

基於py3的程式碼統計工具(簡易版)

#encoding = utf-8 import os def get_python_file_abspath(dirpath,all_files = []):     '''獲取指定資料夾下python檔名'''     #先判斷指定的路徑是檔案還是目錄     if o