首页 > 解决方案 > `Run()` 和 `py_run` 之间的区别以及在 Pylint 中的 `b.py` 中使用 `try except` 块

问题描述

这是我的代码:

# 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,因此不执行打印语句。但是,如果我在其中添加一个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')

还有另一种方法可以在 python 程序的文件上运行 pylint:

# 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它,因为它已经解决了我运行 pylint 的问题。但是 a.py更通用,除了运行 pylint 文件之外,还可以传递各种参数。为什么b.py需要一个try exceptc.py而不执行打印命令?

标签: pythonpython-3.xlintpylint

解决方案


这是因为Runsys.exit在其__init__方法中使用。您可以传递do_exit=False参数,如pl.Run(pylint_opts, do_exit=False)使a.py工作如您所愿:运行 pylint 后打印。


推荐阅读