检查ipython中最后一个命令的退出状态

pio*_*otr 7 python ipython

有人知道如何检查ipython中最后执行的命令(退出代码)的状态吗?

pio*_*otr 16

它应该_exit_code在您运行命令后存储(至少在即将发布的v0.11版本中).

  • 从0.13.2开始,这是有效的,但是如果我用"a =!false"捕获stdout(如果我捕获stdout`_exit_code`没有改变).谁知道是否有解决方案? (2认同)

ste*_*eha 7

我假设您正在讨论使用!escape 从IPython运行命令:

In[1]: !echo hello
hello

In[2]:
Run Code Online (Sandbox Code Playgroud)

使用Google我找到了文档,没有提到任何地方捕获的命令的退出状态.使用dir()我查找可能持有该信息的变量名称,但我没有找到任何内容.我尝试了x = !ls语法,并x从命令设置为输出行列表; 那里没有退出状态.

简而言之,我认为IPython甚至不会捕获这些信息.在这一点上,我想检查IPython的源代码,试图找出其他任何东西.

您始终只需运行命令os.system()并从中获取退出状态.

In[1]: !launch_eva
launch_eva: could not open AT Field

In[2]: import os
In[3]: exit_status = os.system("launch_eva")
launch_eva: could not open AT Field

In[4]: exit_status
3

In[5]:
Run Code Online (Sandbox Code Playgroud)

因此,我们看到命令launch_eva在无法打开AT字段时返回退出状态3.

看起来这是IPython应该保存的东西.有很多隐藏的变量.您应该提交有关此功能的功能请求.

注意:这是在Ubuntu上的IPython 0.10.1中测试的."piotr"的另一个答案是,退出代码将在IPython 0.11中捕获,因为即将发布.我从https://github.com/ipython/ipython.git克隆了Git存储库中的源代码并对其进行了测试python ipython.py; 正如piotr所说,退出状态保存在一个名为的变量中_exit_status.