如果它调用的脚本引发错误,则终止包装器脚本

时间:2014-04-07 20:01:48

标签: python python-2.7 subprocess

我有三个python脚本,我使用

从包装脚本调用
subprocess.Popen(['python', script, '-i', In]).wait()

其中script是要调用的脚本的名称,In是所需的参数。不幸的是,如果其中一个脚本出现错误,包装器会输出错误,但仍会继续调用下一个脚本。

有没有办法让它在其中一个子进程抛出错误后终止?

谢谢

2 个答案:

答案 0 :(得分:0)

当子进程退出时,wait()方法将设置Popen对象的returncode属性。您应该检查该值以确定脚本是否应该继续:

p = subprocess.Popen(['python', script, '-i', In])
p.wait()
if p.returncode != 0:
    sys.exit(p.returncode)

编辑:您还可以考虑使用subprocess.call(),它将直接返回returncode属性。这样你就不需要创建一个Popen对象了。如果您更喜欢try / except模式,则可以使用subprocess.check_call(),如果子进程以非零状态退出,则会抛出CalledProcessError。

答案 1 :(得分:-1)

try:
    command
except Exception as e:
    print str(e)
    return

如果command失败,except块将运行,打印错误并结束脚本。