【问题标题】:Get error thrown by command-line execution using subprocess python使用子进程python获取命令行执行引发的错误
【发布时间】:2020-05-09 14:57:51
【问题描述】:

我正在尝试检索 python 脚本本身中任何命令行执行引发的错误(重要的是退出代码)。我正在为此使用子流程。当我执行任何错误命令时,它会像往常一样在终端中引发错误,但随后它会停止执行 python 文件并且我无法获取存储错误。

查看代码。 p_status 应该存储退出代码。但在打印之前,它会在终端抛出错误后停止脚本。

process = subprocess.Popen([<command>], stdout = subprocess.PIPE)
output = process.communicate()
p_status = process.wait()
print(p_status)

我经历了不同的解决方案并尝试了所有解决方案,但无法获得所需的结果。

【问题讨论】:

  • 什么意思?如果您不希望脚本结束,则必须 except 错误,但我怀疑该进程甚至是使用错误命令创建的。
  • 您应该在try-except 块中执行此操作。在没有找到命令的地方,你应该捕获 'OSError` 异常
  • 所以基本上我将使用 python 运行不同的应用程序。如果目录中不存在该应用程序,则会引发错误。我想抓住那个错误并使用它。我尝试使用tryexcept,但由于没有创建任何进程,所以我不会出错。 P.S:对不起,如果我听起来很愚蠢。我对此很陌生。
  • 谢谢@karolch。我相信它运作良好。不知道 OSError。

标签: python command-line subprocess exit-code


【解决方案1】:

使用以下代码解决了这个问题:

try:
    subprocess.Popen([<command>], stdout = subprocess.PIPE)
except OSError as error:
    print(error.errno) #for exit code

P.S - 学分@karolch

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-10-19
    • 2019-06-21
    • 1970-01-01
    • 2020-12-28
    • 2017-05-30
    • 1970-01-01
    • 1970-01-01
    • 2015-06-08
    相关资源
    最近更新 更多