`运行()` 和 `py_run` 之间的区别以及 Pylint 中 `b.py` 中 `try except` 块的使用

Difference between `Run()` and `py_run` and the use of `try except` block in `b.py` in Pylint

这是我的代码:

# uses Python3.7
# a.py

from pylint import lint as pl

pathvar = 'test.py'
pylint_opts = [pathvar]

pl.Run(pylint_opts)

print('New Text File Here')

此代码为我提供了正确的输出,但在 Run 语句之后未执行任何操作,因此未执行 print 语句。但是,如果我在其中添加一个 try except 块,它 运行 没问题。

# uses Python3.7
# b.py

from pylint import lint as pl

try:
    pathvar = 'test.py'
    pylint_opts = [pathvar]
    pl.Run(pylint_opts)
except:
    pass

print('New Text File Here')

还有另一种方法 运行 pylint 来自 python 程序的文件:

# uses Python3.7
# c.py

from pylint import epylint as lint

pathvar = 'test.py'
lint.py_run(pathvar)

print('New Text File Here')

这个执行 py_run 然后打印正确的输出。 我知道您可能会建议我使用 c.py,因为它已经解决了我的 运行ning pylint 问题。但是 a.py 更通用,除了 运行 之外,还可以传递各种参数 pylint 文件。为什么 b.py 需要一个 try except 块而 c.py 不需要执行打印命令?

这是因为 Run class 在其 __init__ 方法中使用了 sys.exit。您可以传递 do_exit=False 参数,例如 pl.Run(pylint_opts, do_exit=False) 以使 a.py 像您希望的那样工作:在 运行 pylint 之后打印。