gpt4 book ai didi

python - nbconvert 执行时记录

转载 作者:太空宇宙 更新时间:2023-11-03 11:40:17 26 4
gpt4 key购买 nike

我有一个需要从命令行运行的 Jupyter 笔记本。为此,我有以下命令:

jupyter nbconvert --execute my_jupyter_notebook.ipynb --to python

此命令创建一个 python 脚本,然后执行它。但是,我在 Python 中使用 logging 库来记录某些事件。当它从上面的命令执行脚本时,终端上什么也看不到。

但是,当我手动执行转换后的 jupyter 时,如下所示,我可以在终端上看到所有日志:

python3 my_jupyter_notebook.py

我已经尝试添加额外的参数,例如 --debug 和 --stdout,但它们只会输出所有代码,而不仅仅是日志。是否可以在执行 nbconvert 执行命令时在终端上输出日志记录的结​​果?

最佳答案

这是一个代码,用于捕获在执行 nbconvert 期间产生的警告和异常并将它们传递给记录器。 Jupyter 和 nbconvert 使用不同的方式处理异常。

from logging import getLogger
import sys
import traceback
import warnings
import IPython
import logging

logger = getLogger(name)
logging.basicConfig(stream=sys.stdout, level=logging.WARNING)

# Catch Traceback
def showtraceback(self):
traceback_lines = traceback.format_exception(*sys.exc_info())
del traceback_lines[1]
message = ''.join(traceback_lines)
logger.error(traceback_lines[-1] + str(message))
IPython.core.interactiveshell.InteractiveShell.showtraceback = showtraceback

# Catch Warning
def warning_on_one_line(message, category, filename, lineno, file=None, line=None):
logger.warning(str(message) + '\n' + str(filename) + ' : ' + str(lineno))
return '%s:%s: %s:%s\n' % (filename, lineno, category.__name__, message)
warnings.formatwarning = warning_on_one_line

关于python - nbconvert 执行时记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50863479/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com