我使用子进程模块(Popen)使用IPython运行脚本,并且它似乎没有为进程正确设置系统状态。
#(script run_test.py)
import subprocess as proc
command = "ipython test.py"
p = proc.Popen( command, shell=True, cwd=None, stdout=proc.PIPE,
stderr=proc.STDOUT )
( stdOut, stdErr ) = p.communicate()
print p.returncode
if p.returncode:
raise Exception( stdOut )
在这个例子中," test.py"只是一个简单的脚本(仅raise Exception()
)。当我从命令行(Redhat Enterprise 5.11)运行此脚本时,我得到:
> python run_test.py
0
现在,如果我在" run_test.py"中更改我的命令使用python(而不是IPython),我得到:
(using command = "python test.py")
> python run_test.py
1
Traceback (most recent call last):
File "run_test.py", line 12, in <module>
raise Exception( stdOut )
Exception: Traceback (most recent call last):
File "test.py", line 2, in <module>
raise Exception()
Exception
有关如何让ipython正确设置系统错误代码的任何提示吗?