python 这个小脚本使用Python 2或3(无论你运行它们)执行Jupyter笔记本,如果引发任何异常则会失败。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 这个小脚本使用Python 2或3(无论你运行它们)执行Jupyter笔记本,如果引发任何异常则会失败。相关的知识,希望对你有一定的参考价值。

import os
import subprocess
import tempfile
import sys
import nbformat

if sys.version_info >= (3,0):
    kernel = 'python3'
else:
    kernel = 'python2'

def _notebook_run(path):
    """Execute a notebook via nbconvert and collect output.
       :returns (parsed nb object, execution errors)
    """
    with tempfile.NamedTemporaryFile(suffix=".ipynb") as fout:
        args = ["jupyter", "nbconvert", "--to", "notebook", "--execute",
                "--ExecutePreprocessor.timeout=60",
                "--ExecutePreprocessor.kernel_name="+kernel,
                "--output", fout.name, path]
        subprocess.check_call(args)

        fout.seek(0)
        nb = nbformat.reads(fout.read().decode('utf-8'), nbformat.current_nbformat)

    errors = [output for cell in nb.cells if "outputs" in cell
              for output in cell["outputs"]
              if output.output_type == "error"]

    return nb, errors


if __name__ == '__main__':
    for filename in os.listdir('.'):
        if (filename.split('.')[-1] == 'ipynb'):
            nb, errors = _notebook_run(filename)
            if errors != []:
                raise(Exception)

以上是关于python 这个小脚本使用Python 2或3(无论你运行它们)执行Jupyter笔记本,如果引发任何异常则会失败。的主要内容,如果未能解决你的问题,请参考以下文章

漏洞|74cms 3.6 前台SQL注入+Python脚本小练习

C++ 向量到 Python 3.3

Python批量裁剪图片小脚本

Python的sys.argv使用说明

Python的sys.argv使用说明

如何从python中的小部件在任何窗口上绘制