问:统计项目下文件的总行数?


解:
        第一步:先用python统计单个文件行数;
        第二步:遍历文件夹累加全部文件行数;

当然,pycharm有插件直接可以统计行数:Statistic - IntelliJ IDEs Plugin | Marketplace

具体实现步骤:获取单个文件行数:

# -*- coding: utf-8 -*-

file = r"文件路径"

# 第一种,直接打开文件读取行数(文件较小时)
count = 1
for count, line in enumerate(open(file, 'r', encoding='utf-8').readlines()):
    count += 1
print('行数:', count)

# 第二种,读取文件到缓存中,根据换行符进行计算
count = 1
fp = open(file, "r", encoding='utf-8')
while 1:
    buffer = fp.read(8*1024*1024)
    if not buffer:
        break
    count += buffer.count('\n')
print("行数:", count)

遍历文件夹进行读取:这里需要引入os模块,对文件夹进行遍历

import os

total_line_num = 0  # 总行数
total_file_num = 0  # 总文件数
avg_file_num = 0    # 平均行数
max_line_num = 0    # 最大行数
min_line_num = 999999    # 最小行数

for base_path, folder_list, file_list in os.walk('C:/Users/xxx/xxx/xxx'):

    total_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文件,排除
        if file_ext[1] != 'py':
            continue
        # py文件数加一
        total_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
        total_line_num += count
        max_line_num = count if count > max_line_num else max_line_num
        min_line_num = count if count < min_line_num else min_line_num
print('总行数:', total_line_num)
print('总文件数:', total_file_num)
print('最多行数:', max_line_num)
print('最小总行数:', min_line_num)
print('平均行数:', total_line_num / total_file_num)

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐