【问题标题】:ipython: exit() statement not working as expectedipython:exit() 语句未按预期工作
【发布时间】:2017-10-27 10:35:19
【问题描述】:

我正在 ipython (1.2.1) 中运行一个脚本,如果不满足某个条件,我需要它停止。我尝试使用 exit() 语句,但它的行为不符合预期。

以我称之为test.py的以下脚本为例:

if(True):
    print('Error')
    exit()
print('Still here!')

当我使用python test.py 运行它时,我得到:

$python test.py
Error

然后按预期终止执行。

但如果我使用 run -i test.py 从 ipython 运行它,我会得到:

In [1]: run -i test.py
Error
Still here!

最后 ipython 的执行被终止。问题是在这种情况下第二个打印语句仍然执行,而我需要在遇到 exit() 语句时立即终止脚本的执行。

为什么会发生这种情况,我怎样才能获得我想要的结果? (我正在运行 python 2.7.6)

【问题讨论】:

  • import sys; sys.exit(0)
  • 我不知道 ipython,但试试sys.exit()。当然,如果您还没有这样做,您还需要import sys。普通的exit() 函数有点奇怪:它被设计为方便在标准 Python 交互式解释器中使用,但在其他上下文中使用它通常不是一个好主意。
  • 更新到 ipython 5
  • @cricket_007 它有效!但是为什么 exit() 完全不起作用?如果您在答案中转换您的评论并向我解释这一点,我将很高兴接受它!

标签: python ipython exit execution terminate


【解决方案1】:

exit() 单独用于 REPL,并非真正用于脚本。

import sys 之后尝试使用sys.exit(0),当然

【讨论】:

  • 在交互式 Ipython 会话中,REPL 捕获 sys.exit。在测试argparse 示例时,我一直依赖它。
猜你喜欢
  • 2020-03-05
  • 2012-08-16
  • 2020-03-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-23
  • 2018-06-16
  • 2016-04-08
相关资源
最近更新 更多