程序化创建jupyter 4笔记本?

时间:2016-03-05 21:55:51

标签: python ipython jupyter-notebook

我想以编程方式生成一些from IPython.nbformat import current as nbf作为我的建模工作的一部分,以便我可以使用markdown注释将带注释的数字和代码转储到公共git仓库。理想情况下,我会创建一个新的笔记本,并在每次运行新模型时发布它。

来自this gist,我找到了这样做的模式:IPython.nbformat.current

但是,自去年春天以来,names1 <- function(x) { z <- unlist(strsplit(x, " "))[1] z <- substr(z,1,1) y <- unlist(strsplit(x, " "))[2] paste(z,"."," ", y, sep="") } 已被弃用,实际上在jupyter / ipython 4.0.1中不存在,所以这对我不起作用。

现在这种模式的正确方法是什么?

2 个答案:

答案 0 :(得分:3)

D'哦。

IPython.nbformat已弃用。

nbformat不是......

这似乎工作正常:

from nbformat import current as nbf


def make_notebook(outPath: str, description: str):
    nb = nbf.new_notebook()
    code = "1+2"
    cells = [nbf.new_text_cell('markdown', description), nbf.new_code_cell(code)]
    nb['worksheets'].append(nbf.new_worksheet(cells=cells))

    fname = 'test.ipynb'

    with open(path.join(outPath,fname), 'w') as _:
        nbf.write(nb, _, 'ipynb')

答案 1 :(得分:0)

v4的更新版本

可能有更好的版本,对我有用。

from nbformat import v4 as nbf
import nbformat
from os import path



def make_notebook(outPath: str, description: str):
    nb = nbf.new_notebook()
    code = "1+2"
    cells = [nbf.new_markdown_cell( description), nbf.new_code_cell(code)]
    nb['cells'] = cells

    fname = 'test.ipynb'
    print(nb)
    with open(path.join(outPath,fname), 'w') as _:
        nbformat.write(nb, _)