wat*_*nic 47 python ipython ipython-notebook
我想以编程方式在IPython Notebook早期退出单元格.exit(0)
然而,杀死了内核.
什么是正确的方法来做到这一点?我不想拆分单元格或手动停止执行.
Sam*_*zzo 28
安静地停止当前和后续单元格:
class StopExecution(Exception):
def _render_traceback_(self):
pass
raise StopExecution
Run Code Online (Sandbox Code Playgroud)
Pau*_*aul 24
略微更"适当"的选择:
除了最差的try/except块之外,这将使你除外.
raise KeyboardInterrupt
Run Code Online (Sandbox Code Playgroud)
你的一个更干净的版本:
assert(False)
Run Code Online (Sandbox Code Playgroud)
或者干脆:
raise
Run Code Online (Sandbox Code Playgroud)
如果你想节省一些按键.
Dar*_*aut 15
我在这里重新发布我的答案,因为解决方案也适用于你的问题.它会...
只需从下面的代码中导入"退出"到您的jupyter笔记本(IPython笔记本)中,并调用'exit()'即可.它会退出并让你知道......
An exception has occurred, use %tb to see the full traceback.
IpyExit
Run Code Online (Sandbox Code Playgroud)
"""
# ipython_exit.py
Allows exit() to work if script is invoked with IPython without
raising NameError Exception. Keeps kernel alive.
Use: import variable 'exit' in target script with
'from ipython_exit import exit'
"""
import sys
from io import StringIO
from IPython import get_ipython
class IpyExit(SystemExit):
"""Exit Exception for IPython.
Exception temporarily redirects stderr to buffer.
"""
def __init__(self):
# print("exiting") # optionally print some message to stdout, too
# ... or do other stuff before exit
sys.stderr = StringIO()
def __del__(self):
sys.stderr.close()
sys.stderr = sys.__stderr__ # restore from backup
def ipy_exit():
raise IpyExit
if get_ipython(): # ...run with IPython
exit = ipy_exit # rebind to custom exit
else:
exit = exit # just make exit importable
Run Code Online (Sandbox Code Playgroud)