2025年3月22日 星期六 甲辰(龙)年 月廿一 设为首页 加入收藏
rss
您当前的位置:首页 > 计算机 > 编程开发 > Python

统计文件夹下所有代码文件的行数

时间:02-27来源:作者:点击数:10

Python脚本,帮你统计文件夹下所有代码文件的行数。这个脚本会递归遍历文件夹,支持多种编程语言的文件。

  • import os
  • from pathlib import Path
  • def count_lines_in_file(file_path):
  • """统计单个文件的行数"""
  • try:
  • with open(file_path, 'r', encoding='utf-8') as f:
  • return len(f.readlines())
  • except UnicodeDecodeError:
  • try:
  • # 尝试其他编码
  • with open(file_path, 'r', encoding='gbk') as f:
  • return len(f.readlines())
  • except:
  • print(f"无法读取文件: {file_path}")
  • return 0
  • except Exception as e:
  • print(f"处理文件时出错 {file_path}: {str(e)}")
  • return 0
  • def count_code_lines(directory):
  • """统计目录下所有代码文件的行数"""
  • # 定义要统计的文件扩展名
  • code_extensions = {
  • '.py': 'Python',
  • '.java': 'Java',
  • '.cpp': 'C++',
  • '.c': 'C',
  • '.h': 'C/C++ Header',
  • '.js': 'JavaScript',
  • '.ts': 'TypeScript',
  • '.html': 'HTML',
  • '.css': 'CSS',
  • '.go': 'Go',
  • '.rs': 'Rust',
  • '.php': 'PHP'
  • }
  • # 初始化结果字典
  • results = {ext: {'files': 0, 'lines': 0} for ext in code_extensions.values()}
  • total_files = 0
  • total_lines = 0
  • # 遍历目录
  • for file_path in Path(directory).rglob('*'):
  • if file_path.suffix.lower() in code_extensions:
  • # 跳过隐藏文件夹(如.git)
  • if '.git' in str(file_path) or 'node_modules' in str(file_path):
  • continue
  • lang = code_extensions[file_path.suffix.lower()]
  • lines = count_lines_in_file(file_path)
  • results[lang]['files'] += 1
  • results[lang]['lines'] += lines
  • total_files += 1
  • total_lines += lines
  • # 打印结果
  • print(f"\n代码统计结果 - 目录: {directory}")
  • print("-" * 50)
  • print(f"{'语言':<15} {'文件数':<10} {'行数':<10}")
  • print("-" * 50)
  • for lang, data in results.items():
  • if data['files'] > 0: # 只显示有文件的语言
  • print(f"{lang:<15} {data['files']:<10} {data['lines']:<10}")
  • print("-" * 50)
  • print(f"{'总计':<15} {total_files:<10} {total_lines:<10}")
  • # 使用示例
  • if __name__ == '__main__':
  • directory = input("请输入要统计的目录路径: ")
  • count_code_lines(directory)

这个脚本的主要特点:

  1. 支持多种常见编程语言文件的统计
  2. 递归遍历所有子目录
  3. 自动跳过 .git 和 node_modules 等特殊目录
  4. 支持 UTF-8 和 GBK 编码的文件
  5. 按语言类型分类统计
  6. 显示每种语言的文件数和总行数
  7. 最后显示总计数据

使用方法很简单,直接运行脚本并输入要统计的目录路径即可。比如:

  • 请输入要统计的目录路径: /path/to/your/project
  • 代码统计结果 - 目录: /path/to/your/project
  • --------------------------------------------------
  • 语言 文件数 行数
  • --------------------------------------------------
  • Python 5 1250
  • JavaScript 3 860
  • CSS 2 320
  • --------------------------------------------------
  • 总计 10 2430

如果你需要添加其他类型的文件扩展名,只需要在 code_extensions 字典中添加即可。

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门
本栏推荐