我有一个名为my_code.py的Python脚本.我正在使用:

import pylint

pylint.run_pylint(argv=["my_code.py"])

在上面的代码片段中,如何获取所有错误并将它们存储在list中?

推荐答案

this answer的启发,一种方法是获得json报告并迭代它.

import json
from io import StringIO
from pylint.lint import Run
from pylint.reporters import JSONReporter

reporter = StringIO()
Run(["my_code.py"], reporter=JSONReporter(reporter), do_exit=False)
results = json.loads(reporter.getvalue())
errors = {}
for i in results:
    errors[i.get('message-id')] = i.get('message')

for k, v in errors.items():
    print(k, v)

这将打印每个错误代码和相应的消息.

例如,如果您有my_code.py,如下所示:

def foo(l: List[int]) -> List[int]:
    return l[1:]

然后,在运行我的解决方案后,您将获得:

C0304 Final newline missing
C0114 Missing module docstring
C0116 Missing function or method docstring
C0104 Disallowed name "foo"
C0103 Argument name "l" doesn't conform to snake_case naming style
E0602 Undefined variable 'List'

Python相关问答推荐

Pydantic:如何将对象列表表示为dict(将列表序列化为dict)

提取两行之间的标题的常规表达

如何自动抓取以下CSV

使用SciPy进行曲线匹配未能给出正确的匹配

@Property方法上的inspect.getmembers出现意外行为,引发异常

比较两个数据帧并并排附加结果(获取性能警告)

Deliveryter Notebook -无法在for循环中更新matplotlib情节(保留之前的情节),也无法使用动画子功能对情节进行动画

使用@ guardlasses. guardlass和注释的Python继承

如何过滤包含2个指定子字符串的收件箱列名?

将9个3x3矩阵按特定顺序排列成9x9矩阵

利用Selenium和Beautiful Soup实现Web抓取JavaScript表

pandas:排序多级列

删除marplotlib条形图上的底边

使用Python从URL下载Excel文件

如何在TensorFlow中分类多个类

判断solve_ivp中的事件

跳过嵌套JSON中的级别并转换为Pandas Rame

如何在海上配对图中使某些标记周围的黑色边框

Js的查询结果可以在PC Chrome上显示,但不能在Android Chrome、OPERA和EDGE上显示,而两者都可以在Firefox上运行

将相应的值从第2列合并到第1列(Pandas )