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)

得到结果如下


Python 练习册 0007题 (统计代码)_第1张图片

你可能感兴趣的:(Python 练习册 0007题 (统计代码))