问:统计项目下文件的总行数?
解:
第一步:先用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)