gpt4 book ai didi

python - 如何获得subprocess.check_output()函数返回的错误?

转载 作者:行者123 更新时间:2023-12-02 10:47:25 24 4
gpt4 key购买 nike

#!/bin/python
import subprocess
import traceback
import logging
output_file = "/Users/abhabhin/Desktop/Cisco/Cisco_Tasks/1_KnowledgeTraining/CodeImplementations/report.log"
cmd = "/Users/abhabhin/Desktop/Cisco/Cisco_Tasks/1_KnowledgeTraining/CodeImplementations/script.sh HelloWorld"
try:
with open(output_file, "w") as file:
output = (subprocess.check_output(cmd, shell=True))
file.write(output.decode())
except Exception as e:
#logging.error(traceback.format_exc())
#print("traceback.format_exc() = " + (str)(traceback.format_exc()))
print("Inside Exception")
with open(output_file, "w") as file:
file.write((str)(traceback.format_exc()))

上面是我的代码,其中-

“output_file”是将存储通过check_output运行的命令的输出的日志文件
“cmd”是要通过传递HelloWorld文件在其中运行script.sh的cmd。

现在,当通过subprocess.check_output()函数运行命令(cmd)时没有错误时,output_file具有cmd输出的内容。

但是,当cmd通过subprocess.check_output()运行并且build.sh中存在语法错误时,该错误会在控制台上引发错误,但该错误不会记录/写入到output_file中。

请给我建议一种方法,这样我也可以写出带有控制台错误的output_file。

我不能使用subprocess.run(),所以请提出一种仅使用subprocess.check_output()的方法

请引用上面的代码以供引用。

谢谢,
阿比纳夫

最佳答案

默认情况下,您仅捕获标准输出。该错误将是标准错误。

docs:

To also capture standard error in the result, use stderr=subprocess.STDOUT:

>>>
>>> subprocess.check_output(
... "ls non_existent_file; exit 0",
... stderr=subprocess.STDOUT,
... shell=True)
'ls: non_existent_file: No such file or directory\n'

关于python - 如何获得subprocess.check_output()函数返回的错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62325240/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com