subprocess.check_output 未捕获 python 错误

问题描述 投票:0回答:1

我正在创建一种Python编程语言,名为Spearhead,我有一个工作终端,是通过Subprocess模块制作的。问题是我使用 check_output 来捕获 python 错误,而不是输出它们。但由于某种原因,这不起作用,并且仍然会产生上述错误。

部分代码不起作用:

import subprocess
def run_c(c):
    try:
        #start terminal and get output
        output = subprocess.check_output(c, shell=True, stderr=subprocess.STDOUT)
        return output.decode()
    except subprocess.CalledProcessError as e:
        #incase i need to handle errors later
        return e.output.decode()
python subprocess interpreter
1个回答
0
投票

解决方案1:根据你的代码,你是否输入了运行该函数的行?如果是这样,您应该这样做,因为这可能是您的代码无法正常运行甚至根本无法运行的原因。在 “run_c(c)” 函数中,还应该定义 c 变量。

解决方案2:output行中,尝试使用.run而不是.checkoutput。根据python文档3.12.5,.run函数在被调用时将返回CompletedProcess,然后捕获stdout和stderr,您可以挑选出stderr并从那里故意解码stderr。此外,您可以检查如果您想了解有关输出的更多详细信息并检查错误,将 capture_output 设置为 true。

希望这有帮助!

© www.soinside.com 2019 - 2024. All rights reserved.