代码之家  ›  专栏  ›  技术社区  ›  DaveB

Pylint和子流程。运行返回退出状态28

  •  1
  • DaveB  · 技术社区  · 6 年前

    我试图使用subprocess运行pylint,但得到一条模糊的消息,说明非零退出状态28。对于Pylint或subprocess,我找不到任何对退出状态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:\Python35\lib\subprocess.py", line 708, in run
        output=stdout, stderr=stderr)
    subprocess.CalledProcessError: Command 'pylint test_script.py' returned non-zero exit status 28
    
    1 回复  |  直到 6 年前
        1
  •  0
  •   ColonelFazackerley    6 年前

    如果子进程返回非零(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'))