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的主要内容,如果未能解决你的问题,请参考以下文章