码迷,mamicode.com
首页 > 编程语言 > 详细

python统计代码总行数(代码行、空行、注释行)

时间:2018-07-18 19:15:25      阅读:218      评论:0      收藏:0      [点我收藏+]

标签:工作   +=   end   def   dirname   功能   图片   wal   计数   

我们在工作或学习代码的过程中,经常会想知道自己写了多少行代码,今天在项目环境写了个脚本统计了项目代码的数量。

功能:

        1.统计代码总行数

        2.统计空行数

        3.统计注释行数

# coding=utf-8
import 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_num

if __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

 执行结果:

 技术分享图片

python统计代码总行数(代码行、空行、注释行)

标签:工作   +=   end   def   dirname   功能   图片   wal   计数   

原文地址:https://www.cnblogs.com/zeke-python-road/p/9330830.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!