我有三个python脚本,我使用
从包装脚本调用subprocess.Popen(['python', script, '-i', In]).wait()
其中script是要调用的脚本的名称,In是所需的参数。不幸的是,如果其中一个脚本出现错误,包装器会输出错误,但仍会继续调用下一个脚本。
有没有办法让它在其中一个子进程抛出错误后终止?
谢谢
答案 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
块将运行,打印错误并结束脚本。