Pylint和Subprocess.Run返回退出状态28

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Pylint和Subprocess.Run返回退出状态28相关的知识,希望对你有一定的参考价值。

我正在尝试使用子进程运行pylint,但得到一个模糊的消息,说明非零退出状态28.我找不到对Pylint或子进程的退出状态28的任何引用。

我只能假设这是一个pylint / windows问题,因为运行一些其他典型的命令,例如head,工作正常,直接在控制台中运行pylint。

在Windows 10上运行python 3.5。

有任何想法吗?

MWE

import subprocess

cmd = 'pylint test_script.py'
subprocComplete = subprocess.run(cmd, shell=True, check=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
print(subprocComplete.stdout.decode('utf-8'))

产量

python35 pylint_subprocess_test.py
Traceback (most recent call last):
  File "pylint_subprocess_test.py", line 3, in <module>
    subprocComplete = subprocess.run(cmd, shell=True, check=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
  File "C:Python35libsubprocess.py", line 708, in run
    output=stdout, stderr=stderr)
subprocess.CalledProcessError: Command 'pylint test_script.py' returned non-zero exit status 28
答案

如果子进程返回非零(通常是哪个pylint),那么subprocComplete永远不会被赋值给。您可以捕获错误,错误对象保存您想要的输出。

import subprocess

cmd = 'pylint test_script.py'
try:
    subprocComplete = subprocess.run(cmd, shell=True, check=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    print(subprocComplete.stdout.decode('utf-8'))
except subprocess.CalledProcessError as err:
    print(err.output.decode('utf-8'))

以上是关于Pylint和Subprocess.Run返回退出状态28的主要内容,如果未能解决你的问题,请参考以下文章

subprocess

subprocess模块

subprocess.run不抑制所有控制台输出

如何抑制或捕获 subprocess.run() 的输出?

如何从 subprocess.run() 运行 pip install 命令 [重复]

subprocess.run 无法调用可执行文件 [重复]