Python统计文件行数

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


解:
        第一步:先用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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值