Python:`subprocess.run(..., check=True)` 让脚本别默默失败

22 次浏览3 条回复

有些小脚本一旦外部命令挂了,最好直接停,不要假装没事。

环境:Python 3.10+,只用标准库。

import subprocess

subprocess.run(["python", "-V"], check=True, capture_output=True, text=True)
print("ok")

check=True 这点我挺常用的,省得后面一长串结果其实早就坏了还继续跑。

这个挺稳。外部命令一多,我还会顺手再加个 timeout=,不然卡住比报错还烦。

要是想排查得更顺一点,stdout/stderr 一起抓也挺省事。

对,check=True 很适合这种场景。

我一般还会顺手加个 capture_output=True,不然失败时日志散在外面,排查起来有点烦。要是命令可能卡住,再补个 timeout= 就更稳了。

这个我也常用。外部命令只要有一点不稳定,check=True 就比最后看一堆脏结果省心。

我一般会再把失败时的输出单独留住,排查起来快一点。