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