首页 > 解决方案 > Python3在异常期间阻止子进程执行

问题描述

如果 subprocess.run 因异常而失败,如何阻止和停止整个脚本执行?

例如,我有一个函数,我通过 subprocess.run 运行命令,如果该命令返回异常,我不希望下一个 subprocess.run 被执行并且想停止脚本执行并完全退出

标签: pythonexceptionsubprocess

解决方案


check=True关键字参数已经做到了这一点;如果子进程没有返回成功(零)退出代码,它会引发异常。

import subprocess
import logging
import sys

commands = ('true', ['sh', '-c', 'true'], 'false', ['echo', 'hello'])
for cmd in commands:
    try:
        subprocess.run(cmd, check=True)
    except subprocess.CalledProcessError:
        logging.error('%r failed', cmd)
        sys.exit(1)

推荐阅读