weiqi7777

使用python统计代码行数

0
阅读(2625)

最近在学python,不得不说这门语言很是好用。利用easygui模块,可以编程界面了。在加上一点代码,就可以统计代码行数了。

重点是使用easygui模块。关于esaygui模块的使用,可以参考小甲鱼的网站

http://bbs.fishc.com/forum.php?mod=viewthread&tid=46069&extra=page%3D1%26filter%3Dtypeid%26typeid%3D403

然后就是OS模块,因为要涉及要文件目录的操作。

代码如下:

# -*- coding: utf-8 -*- import sys import codecs from easygui import * import os # C C++ python verilog matlab code_hang = [0,0,0,0,0] # C C++ python verilog matlab code_number = [0,0,0,0,0] def list_file(directory): pwd_list = os.listdir(directory) for i in pwd_list: if '.' not in i: # 如果是目录的话 try: now_pwd = directory + '\\' + i #得到目录的绝对路径 list_file(now_pwd) #在目录中统计代码行数 except: pass else: #如果不是目录,对文件进行分析 if '.c' in i: #verilog code file code_number[0] += 1 with codecs.open(directory + '\\' + i,encoding='utf-8') as file: code_hang[0] += file.read().count('\n')#统计回车的个数即可得到代码的行数 elif '.cpp' in i: code_number[1] += 1 with codecs.open(directory + '\\' + i,encoding='utf-8') as file: code_hang[1] += file.read().count('\n') elif '.py' in i: code_number[2] += 1 with codecs.open(directory + '\\' + i,encoding='utf-8') as file: code_hang[2] += file.read().count('\n') elif '.v' in i: code_number[3] += 1 with codecs.open(directory + '\\' + i,encoding='utf-8') as file: code_hang[3] += file.read().count('\n') elif '.m' in i or '.M' in i: code_number[4] += 1 with codecs.open(directory + '\\' + i,encoding='utf-8') as file: code_hang[4] += file.read().count('\n') else: pass directory = diropenbox('','请选择一个目录') list_file(directory) contex = """【.c】源文件%d个,源代码共有%d行 【.cpp】源文件%d个,源代码共有%d行 【.py】源文件%d个,源代码共有%d行 【.v】源文件%d个,源代码共有%d行 【.m】源文件%d个,源代码共有%d行 """ %(code_number[0],code_hang[0],code_number[1],code_hang[1],\ code_number[2],code_hang[2],code_number[3],code_hang[3],\ code_number[4],code_hang[4],) sum_code_hang = sum(code_hang) if sum_code_hang < 100000: code_percent = sum_code_hang / 100000 * 100 differ = 100000 - sum_code_hang else: code_percent = 100 differ = 0 contex_msg = """你目前共累积编写了%d行代码,完成进度%.2f """ %(sum_code_hang,code_percent) if sum_code_hang >= 100000: contex_msg += "恭喜你,完成了10万行代码目标" else: contex_msg += "离10万行代码还差%d行,请继续努力!" %differ textbox(contex_msg,'统计结果',contex)



代码也比较简单,这里统计了C C++ python verilog matlab五种代码。

clip_image002

Baidu
map