PythonShowMeTheCode(0007): 统计代码行

1. 题目

第 0007 题:有个目录,里面是你自己写过的程序,统计一下你写过多少行代码。包括空行和注释,但是要分别列出来。

2. 思路

  • 首先需要遍历目录,挑选出以.py结尾的文件
  • 空行可以匹配行末尾的\n
  • 注释需要匹配起始为#或者为若干空格#的情况, 多行注释要与多行字符串相区分,本例中暂不考虑

3. 实现

# -*- coding: utf-8 -*-
import os
import os.path
import re


def count_code_lines(path):
    if path is None:
        return

    count_code = 0
    count_null = 0
    count_comment = 0
    files = [os.path.join(path, x) for x in os.listdir(path) if os.path.splitext(x)[1] == ".py"]
    for file in files:
       with open(file, encoding="utf-8") as f:
           lines = f.readlines() 
           for line in lines:
                print(line)
                count_code += 1
                if len(line) == line.count("\n"):
                    count_null += 1
                if len(re.findall(r"^\s*#", line)) > 0:
                    count_comment += 1
            if lines[-1][-1:] == "\n":
                count_null += 1

    print("BLANK: %s" % count_null)
    print("COMMENT: %s" % count_comment)
    print("CODE: %s" % (count_code - count_null - count_comment))


if __name__ == "__main__": 
   count_code_lines(".")
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Ubuntu的发音 Ubuntu,源于非洲祖鲁人和科萨人的语言,发作 oo-boon-too 的音。了解发音是有意...
    萤火虫de梦阅读 99,703评论 9 468
  • linux资料总章2.1 1.0写的不好抱歉 但是2.0已经改了很多 但是错误还是无法避免 以后资料会慢慢更新 大...
    数据革命阅读 12,263评论 2 33
  • 更新时间:2016/5/13 介绍 本文档所提供的编码规范,适用于主要的Python发行版中组成标准库的Pytho...
    超net阅读 5,925评论 0 15
  • 我怎样才能让水边的石头开口 流水已经磨平它的棱角 哗啦嚷动着,推走身体的部分 以碎块,以粉末,以一切疼痛但不彻骨的...
    勒布朗不是德怀恩阅读 110评论 1 1
  • 鼓起勇气打电话给心仪女神:“嘿,我今天生日,有时间陪我吃个饭么?” 女神毫不犹豫笑道:“好啊好啊,正好我饿了,不过...
    逗逗只能是我阅读 155评论 0 0