Python 练习册 0007题 (统计代码)

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

答案

import os


# 查找目录下所有文件夹中的py文件
def get_all_file(path):
    file_list = []
    files = os.listdir(path)
    for file in files:
        # 判断是否是文件夹
        if os.path.isdir(path + '\\' + file):
            print('处理文件夹:' + file)
            file_list = file_list + get_all_file(path + '\\' + file)
        else:
            if os.path.splitext(file)[1] == '.py':
                file_list.append(path + '\\' + file)
                print('添加文件:' + file)
    return file_list


# 计算一个py文件的代码行数, 注释数, 空格数
def get_rows(file):
    with open(file, encoding='utf8') as f:
        lines = f.readlines()
        rows = len(lines)  # 代码总行数
        vuui = 0           # 注释数
        space = 0          # 空格数
        for line in lines:
            if line == '\n':
                space += 1
            if line[0] == '#':
                vuui += 1

        data = {
            'rows': rows,
            'vuui': vuui,
            'space': space
        }
    return data


def run(path):
    file_list = get_all_file(path)

    all_rows = 0     # 总代码数
    all_vuui = 0     # 总注释数
    all_space = 0    # 总空格数

    for file in file_list:
        data = get_rows(file)
        print('正在计算行数:' + file)
        rows = data.get('rows')
        vuui = data.get('vuui')
        space = data.get('space')
        all_rows += rows
        all_vuui += vuui
        all_space += space
    print('所有代码的行数:{}\n其中包括的注释行数:{}\n其中空格行数:{}'.format(all_rows, all_vuui, all_space))


path = r'C:\Users\L\Desktop\vue-blog\backend'
run(path=path)

得到结果如下


推荐阅读更多精彩内容

  • 百战程序员_ Java1573题 QQ群:561832648489034603 掌握80%年薪20万掌握50%年薪...
    Albert陈凯阅读 9,015评论 2 29
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 122,292评论 15 532
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 66,852评论 12 114
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    会飞的鱼69阅读 20,375评论 18 385
  • 我曾信誓旦旦地说不会再放进心里,可相同的情况再出现一次时,我却怎么也掌控不了心的温度。身边的好多东西,突然就变了。
    折颈公主阅读 15评论 0 0