使用python统计代码行数
0赞
发表于 3/10/2015 4:46:26 PM
阅读(4072)
最近在学python,不得不说这门语言很是好用。利用easygui模块,可以编程界面了。在加上一点代码,就可以统计代码行数了。
重点是使用easygui模块。关于esaygui模块的使用,可以参考小甲鱼的网站
然后就是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五种代码。

