我是编码新手。我正在使用 anaconda 环境开发 jupyter 笔记本。我有这个示例代码,我在其中使用 sys.exit() 命令。当它执行时,它会退出脚本并显示几条错误消息。这是我的示例代码。
import sys
name = 'joh'
if name == 'john':
print('Name matches')
else:
print('Incorrect name')
sys.exit(0)
... some more code
Run Code Online (Sandbox Code Playgroud)
执行后返回
Incorrect name
An exception has occurred, use %tb to see the full traceback.
SystemExit: 0
C:\Users\ankur.kulshrestha\AppData\Local\Continuum\Anaconda3\lib\site-packages\IPython\core\interactiveshell.py:2889: UserWarning: To exit: use 'exit', 'quit', or Ctrl-D.
warn("To exit: use 'exit', 'quit', or Ctrl-D.", stacklevel=1)
Run Code Online (Sandbox Code Playgroud)
如何在不收到所有这些错误消息的情况下优雅地退出脚本(除了我实际放入代码中的第一行)。
我想以编程方式跳过在 jupyter 笔记本的单元格中执行一些代码,而不将所有内容包装在 if-else 块中。
到目前为止,我从这个问题中找到的最接近的解决方案:/sf/answers/3986717381/是这样的:
class StopExecution(Exception):
def _render_traceback_(self):
pass
raise StopExecution
Run Code Online (Sandbox Code Playgroud)
但是,它会停止当前单元格的执行以及所有后续单元格的执行,而我只想提前退出当前单元格。有没有办法继续执行其他单元格?
这是一个代码示例:
if skip_page:
display(HTML('<!--SKIP-PAGE-->'))
stop_cell()
render_some_output()
Run Code Online (Sandbox Code Playgroud)
如果stop_cell()被调用,我不想render_some_output()执行,而是整体执行笔记本执行。
这个问题已经被问过,但我已经尝试了相关问题的解决方案,如这无济于事。
我在使用 Python 的exit命令时遇到了问题,并且我已经排除了由 vanilla Python 3 运行的代码的问题。当我使用 iPython 或在 Spyder 的 iPython 控制台中运行它时,问题就出现了。
当我只使用一个简单的退出命令时,我收到错误:
NameError: name 'exit' is not defined
Run Code Online (Sandbox Code Playgroud)
我已经按照另一个链接的建议导入了 sys 。唯一有效的是尝试 sys.exit() 在这种情况下我得到:
An exception has occurred, use %tb to see the full traceback.
SystemExit
C:\Users\sdewey\AppData\Local\Continuum\Anaconda3\lib\site-
packages\IPython\core\interactiveshell.py:2870: UserWarning: To exit: use
'exit', 'quit', or Ctrl-D.
warn("To exit: use 'exit', 'quit', or Ctrl-D.", stacklevel=1)
Run Code Online (Sandbox Code Playgroud)
我只说这种“有效”是因为错误消息较小,因此不那么烦人:)。
有任何想法吗?似乎是 iPython 的问题。我在 Jupyter(使用 iPython)中遇到了一个不同的问题,其中完全忽略了退出,我在这里单独发布了这个问题