我们在工作或学习代码的过程中,经常会想知道自己写了多少行代码,今天在项目环境写了个脚本统计了项目代码的数量。
功能:
1.统计代码总行数
2.统计空行数
3.统计注释行数
# coding=utf-8import os#定义代码所在的目录base_path = '/home/yhl/workspace/xtp_test'#在指定目录下统计所有的py文件,以列表形式返回def collect_files(dir): filelist = [] for parent,dirnames,filenames in os.walk(dir): for filename in filenames: if filename.endswith('.py'): #将文件名和目录名拼成绝对路径,添加到列表里 filelist.append(os.path.join(parent,filename)) return filelist#计算单个文件内的代码行数def calc_linenum(file): with open(file) as fp: content_list = fp.readlines() code_num = 0 #当前文件代码行数计数变量 blank_num = 0 #当前文件空行数计数变量 annotate_num =0 #当前文件注释行数计数变量 for content in content_list: content = content.strip() # 统计空行 if content == '': blank_num += 1 # 统计注释行 elif content.startswith('#'): annotate_num += 1 # 统计代码行 else: code_num += 1 # 返回代码行数,空行数,注释行数 return code_num,blank_num,annotate_numif __name__ == '__main__': files = collect_files(base_path) total_code_num = 0 #统计文件代码行数计数变量 total_blank_num = 0 #统计文件空行数计数变量 total_annotate_num = 0 #统计文件注释行数计数变量 for f in files: code_num, blank_num, annotate_num = calc_linenum(f) total_code_num += code_num total_blank_num += blank_num total_annotate_num += annotate_num print u'代码总行数为: %s' % total_code_num print u'空行总行数为: %s' % total_blank_num print u'注释行总行数为: %s' % total_annotate_num
执行结果: