python3非零退出代码_当IPython遇到运行脚本的异常时生成非零退出代码

我想用IPython运行一个python脚本,并能够判断该脚本是成功的(一直运行)还是不成功(引发了一个异常)。在

通常,可以通过检查命令的返回值来判断命令是否成功,其中对于成功的约定是0,对于错误的约定是其他整数(指示错误的值)。这是使用python script.py运行脚本时的行为,但使用ipython script.py时,IPython会自动捕获错误并(毫无帮助地)返回退出代码0。在

在使用IPython运行脚本时,如何禁用此行为?在

顺便说一下,我需要用IPython而不是Python运行脚本,因为脚本是从IPython笔记本(.ipynb)生成的,并且包含一些IPython魔术命令。在

下面是一个最小的工作示例。在

失败.py#! /usr/bin/env python

mytext = 'Hello World!'

if __name__=="__main__":

print(missing_variable)

使用IPython运行脚本时,异常被打印到stdout,返回值为1,正确地表示脚本失败。在

^{pr2}$

使用IPython运行脚本时,会捕获异常并将回溯打印到stdout,然后IPython退出并返回0(这是不可取的,因为脚本没有成功)。在~$ ipython fail.py

---------------------------------------------------------------------------

NameError Traceback (most recent call last)

~/fail.py in ()

2 mytext = 'Hello World!'

3 if __name__=="__main__":

----> 4 print(missing_variable)

NameError: name 'missing_variable' is not defined

~$ echo $?

0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值