如何从subprocess.Popen启动python脚本如果发生错误则保持打开状态,并在正常返回时关闭?

时间:2013-03-28 06:53:59

标签: python cmd subprocess popen

目前,我在Windows上运行它:

args = ['start', windowname, 'python', '-i', myscript]
subprocess.Popen(args, shell=True)

正如您所看到的,我在python的交互模式下启动了一个运行myscript的子进程。就我而言,这意味着一旦脚本退出,无论它是出错还是成功完成,窗口/ shell都会保持打开状态。但是,我喜欢它,以便当myscript出错时,窗口将保持打开状态,当myscript成功运行时,窗口将关闭。

我这样做的原因是因为我想看到导致错误的错误和输出 - 我宁愿不使用某种形式的日志记录,因为我更容易在视觉上看到窗口和输出。

我认为我无法检查返回码,因为我正在与之交互的进程是start / cmd,而不是python。如果我错了,请纠正我!

谢谢!

1 个答案:

答案 0 :(得分:0)

我认为最简单的方法是将整个事情包装在一个小批处理脚本中,该脚本检查python的返回代码(可能是由您通过使用适当的返回代码调用sys.exit()来设置的。)

This stackoverflow question介绍了如何获取返回代码(显然它位于%errorlevel%中),并且您可以通过在批处理脚本中执行pause来保持cmd窗口处于打开状态。