一个目录里面多个python程序文件,统计一下里面有多少行代码。即分别列出:代码、空行、注释的行数。

268 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

一个目录里面多个python程序文件,统计一下里面有多少行代码。即分别列出:代码、空行、注释的行数。

题目

一个目录里面多个python程序文件,统计一下里面有多少行代码。即分别列出:代码、空行、注释的行数。

代码

在该题目中首先运用了readlines函数逐行读入数据,接着再通过strip函数去出每行代码的首尾空白部分,最后再每行数据中识别是否为空与是否为“#”开头,从而识别数据中的空行与注释行的数量。由于“#”不在开头的代码情况较多,不一定为注释,因此我们只记录以“#”开头的数据为注释行,这也是其不足所在。

fp = open("hanshu2.py",encoding = 'utf-8')

codeNum = len(open("hanshu2.py",encoding = 'utf-8').readlines()) #统计行数
spaceNum = 0
noteNum = 0

for readFP in fp.readlines():
    readFP = readFP.strip()
    if readFP == "":
        spaceNum += 1
    if readFP.startswith("#"): 
        noteNum += 1

print("\n该文件共有%d行代码" %codeNum)
print("其中%s行空行" %spaceNum)
print("其中%s行注释" %noteNum)

也可以通过os遍历整个文件夹读取文件,从而获取文件的行数

import os
 
Max_Num = 0    # 最大行数
Min_Num = 1000000    # 最小行数
File_Num_Avg = 0    # 所有文件平均行数
All_File_Num = 0  # 文件夹中文件数总和
All_File_Row = 0  #所有文件代码行数总和
 
for base_path, folder_list, file_list in os.walk('C:/XXXXX'):
    All_File_Num += len(file_list)
    #进入文件夹
    for file_name in file_list:
        file_path = os.path.join(base_path, file_name)
        file_ext = file_path.rsplit('.', maxsplit=1)
        # 识别py后缀为py的文件
        if file_ext[1] != 'py':
            continue
        All_File_Num += 1
        count = 0
        with open(file_path, 'rb') as f:
            for line in f:
                # 将代码中的空格去除,如果需要计数则保留该项
                line = line.strip()
                if not line:
                    continue
                # 将代码中的注释空格去除,如果需要计数则保留该项
                if line.startswith(b'#'):
                    continue
                count += 1
        All_File_Row += count
        Max_Num = count if count > Max_Num else Max_Num
        Min_Num = count if count < Min_Num else Min_Num
print('最大行数:', Max_Num)
print('最小行数:', Min_Num)
print('平均行数:', All_File_Row / All_File_Num)
print('文件数总和:', All_File_Num)
print('行数总和:', All_File_Row)

结果

在这里插入图片描述