如何使用pygount分析源码统计代码、注释、空行总和及路径问题处理
问题1:ROOT_DIR的.parent调用次数判断
__file__指向的是当前utils/__init__.py文件的完整路径,路径层级为:TestProject/utils/__init__.py
- 调用1次
.parent得到的是TestProject/utils/(utils文件夹本身) - 调用2次
.parent得到的是TestProject/(项目根目录)
你当前写的Path(__file__).parent.parent是正确的,刚好定位到TestProject根目录,不需要修改。
问题2:loc.py中的路径配置错误
你当前的ROOT_DIR已经指向TestProject根目录,不需要再额外拼接"TestProject"子目录,ROOT_DIR / "TestProject"对应的实际路径是TestProject/TestProject,这个路径在你的项目结构中不存在,这是核心错误。
将count方法里的遍历代码修改为:
import os from pygount import SourceAnalysis # 别忘了补导入 from utils import ROOT_DIR class Counter: def __init__(self): self.code = 0 self.docs = 0 self.empty = 0 def count(self): # 去掉多余的TestProject拼接 for subdir, _, files in os.walk(ROOT_DIR): for file in (f for f in files if f.endswith(".py")): # 用Path拼接路径更稳妥,避免Windows/Linux分隔符不兼容 file_path = Path(subdir) / file analysis = SourceAnalysis.from_file(str(file_path), "pygount", encoding="utf-8") self.code += analysis.code_count self.docs += analysis.documentation_count self.empty += analysis.empty_count
其他注意事项
- loc.py代码中用到了
os和SourceAnalysis,如果没有写对应的导入语句需要补上,否则运行会报错 - 如果你需要排除统计某个子目录(比如虚拟环境目录、缓存目录),可以在遍历的时候加判断过滤,比如
if '__pycache__' in subdir: continue
内容的提问来源于stack exchange,提问作者Taraxiah
相关产品推荐
相关产品推荐

