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)
-
这个脚本的主要特点:
使用方法很简单,直接运行脚本并输入要统计的目录路径即可。比如:
- 请输入要统计的目录路径: /path/to/your/project
-
- 代码统计结果 - 目录: /path/to/your/project
- --------------------------------------------------
- 语言 文件数 行数
- --------------------------------------------------
- Python 5 1250
- JavaScript 3 860
- CSS 2 320
- --------------------------------------------------
- 总计 10 2430
-
如果你需要添加其他类型的文件扩展名,只需要在 code_extensions 字典中添加即可。