我是Jupyter的初学者。我有一个Python
程序,它使用 nbformat execute API 启动我的笔记本。
它工作得很好,但有一件事我没有设法弄清楚;如何将数据从我的程序传递到我将要执行的笔记本?
为了完整起见,以下是我用来运行笔记本的代码:
import nbformat
from nbconvert.preprocessors import ExecutePreprocessor
class NotebookExecutor:
def __init__(self, name, base_path, notebook_filename_in, notebook_filename_out, timeout=-1):
self.name = name
if base_path.endswith('/') is False:
base_path = base_path + '/'
self.base_path = base_path
self.notebook_filename_in = notebook_filename_in
self.notebook_filename_out = notebook_filename_out
self.timeout = timeout
def run(self):
print("Running notebook '" + self.name + "'")
nb = nbformat.read(open(self.base_path + self.notebook_filename_in), as_version=4)
ep = ExecutePreprocessor(timeout=self.timeout, kernel_name='python3', allow_errors=True)
try:
ep.preprocess(nb, {'metadata': {'path': self.base_path}})
except CellExecutionError:
msg = 'Error executing the notebook "%s".nn' % self.notebook_filename_in
msg += 'See notebook "%s" for the traceback.' % self.notebook_filename_out
print(msg)
# raise
finally:
nbformat.write(nb, open(self.base_path + self.notebook_filename_out, mode='wt'))
ne = NotebookExecutor('Test', '/my/path', 'MyBook.ipynb', 'MyBook_out.ipynb')
ne.run()
我建议使用造纸厂,我不确定这是否会帮助您解决问题。
https://github.com/nteract/papermill
我可以使用它来循环使用不同参数的笔记本。