使用PyDriller获取提交中文件最后修改行出现AttributeError如何解决
问题原因
你遇到的报错来自两个核心错误:
get_commits_last_modified_lines不是ModifiedFile类的成员方法,它是Commit类的方法,调用时需要将修改文件对象作为参数传入- 你的代码没有添加方法调用的括号
(),即使方法归属正确,写get_commits_last_modified_lines只会被识别为访问属性,而非执行方法
修正后代码
for commit in Repository('testing').traverse_commits(): for modified_file in commit.modified_files: # 从commit对象调用方法,传入当前修改的文件 last_modify_info = commit.get_commits_last_modified_lines(modified_file) print(last_modify_info)
额外注意事项
- 确认你安装的PyDriller为2.0及以上版本,1.x旧版本不存在该方法,版本过低可执行
pip install --upgrade pydriller升级 - 该方法返回字典结构:键为修改的行号,值为对应行最后一次修改的提交对象,你可以直接从返回结果中提取提交归属、行所属代码结构等相关信息
- 如果仅需要处理单个指定提交,不需要遍历仓库所有提交,可以直接构造指定哈希的
Commit对象后执行上述逻辑
内容的提问来源于stack exchange,提问作者Coe Coe
相关产品推荐
相关产品推荐

