Разница между `Run ()` и `py_run` и использованием блока` try кроме` в `b.py` в Pylint - PullRequest
1 голос
/ 04 февраля 2020

Это мой код:

# 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')

Существует также другой метод запуска 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, так как это уже решает мою проблему запуска pylint. Но a.py является более общим, и различные аргументы могут также передаваться помимо запуска файла Pylint. Почему b.py нужен блок try except, а c.py - для выполнения команды печати?

1 Ответ

1 голос
/ 04 февраля 2020

Это потому, что Run class использует sys.exit в своем методе __init__. Вы можете передать do_exit=False аргумент, например pl.Run(pylint_opts, do_exit=False), чтобы a.py работал как вы sh: печать после запуска pylint.

...