Python统计代码、注释及空行数的实现方法

白榆
白榆
发布时间:2026-10-11| 2人浏览过
原创

本文介绍如何使用Python统计代码文件中的代码、注释及空行数量。核心难点在于准确识别单行注释(#)与多行文档字符串('''或""")。通过遍历文件并维护一个状态变量,可以准确计算各类行数。

统计代码、注释及空行数的核心逻辑

在Python中统计文件行数时,最基础的操作是遍历每一行。然而,准确区分“代码”、“注释”和“空行”需要处理两种不同的注释格式:以 # 开头的单行注释,以及以 ''' 或 """ 包裹的多行文档字符串(Docstring)。
处理多行注释的关键在于维护一个状态变量(如 is_comment)。当遇到多行注释的起始符时,将状态设为 True;在状态为 True 期间,所有行均计入注释行数,直到遇到结束符时,将状态重置为 False。

Python实现代码

以下代码演示了如何读取文件并统计行数。它使用 strip() 去除行首尾空白,以此判断是否为空行,并根据行首和行尾的符号来判定注释类型。

# -*- coding:utf-8 -*-
#!python3
path = 'test.py'
with open(path,'r',encoding='utf-8') as f:
  code_lines = 0    #代码行数
  comment_lines = 0  #注释行数
  blank_lines = 0   #空白行数 内容为'\n',strip()后为''
  is_comment = False
  start_comment_index = 0 #记录以'''或"""开头的注释位置
  for index,line in enumerate(f,start=1):
    line = line.strip() #去除开头和结尾的空白符
    #判断多行注释是否已经开始
    if not is_comment:
      if line.startswith("'''") or line.startswith('"""'):
        is_comment = True
        start_comment_index = index
      #单行注释
      elif line.startswith('#'):
        comment_lines += 1
      #空白行
      elif line == '':
        blank_lines += 1
      #代码行
      else:
        code_lines += 1
    #多行注释已经开始
    else:
      if line.endswith("'''") or line.endswith('"""'):
        is_comment = False
        comment_lines += index - start_comment_index + 1
      else:
        pass
print("注释:%d" % comment_lines)
print("空行:%d" % blank_lines)
print("代码:%d" % code_lines)

测试用例与结果分析

为了验证上述逻辑,我们可以使用包含不同注释格式的测试文件。例如,一个包含多行文档字符串和单行注释的文件 test.py。运行上述统计脚本后,程序会输出对应的代码、注释和空行数量。在实际测试中,该脚本能够准确识别并统计出文件中的各项行数。

总结

通过维护状态变量并逐行检查,我们可以有效区分Python文件中的代码、注释和空行。这种方法不仅适用于简单的脚本,也可以扩展用于更复杂的代码分析工具中。以上就是Python统计代码、注释及空行数的详细内容,更多关于Python文件处理的资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。