python实现代码行数统计示例分享


当然,下面是一个使用Python实现的简单代码行数统计的示例。这个示例会遍历指定目录下的所有`.py`文件,并计算它们的总行数。注意,这个示例不包括空行和注释行,仅计算代码行。为了简化,我们暂时不深入处理多行字符串和注释的复杂情况。


import os

def count_code_lines(directory):
    """
    统计指定目录下所有.py文件的代码行数(不包括空行和注释行)
    
    :param directory: 要统计的目录路径
    :return: 代码行数总和
    """
    total_lines = 0
    for root, dirs, files in os.walk(directory):
        for file in files:
            if file.endswith('.py'):
                file_path = os.path.join(root, file)
                with open(file_path, 'r', encoding='utf-8') as f:
                    lines = f.readlines()
                    for line in lines:
                        # 简单的去空行和注释行逻辑
                        # 注意:这里不处理多行字符串和特殊注释(如多行注释)
                        stripped_line = line.strip()
                        if stripped_line and not stripped_line.startswith('#'):
                            total_lines += 1
    return total_lines

# 示例用法
directory_to_count = '/path/to/your/python/project'
print(f"Total code lines: {count_code_lines(directory_to_count)}")

请注意,这个示例中的`count_code_lines`函数使用了一个简单的逻辑来去除空行和以`#`开头的注释行。然而,这种方法并不完美,因为它不会处理多行字符串、多行注释(如Python中的三引号字符串和多行`'''`或`"""`注释)或其他形式的注释(如`"""`包裹的文档字符串)。对于更复杂的统计需求,您可能需要使用更高级的文本解析技术,如正则表达式或专门的代码分析工具。

另外,请确保将`directory_to_count`变量的值替换为您想要统计的Python项目目录的实际路径。