Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jupyter notebook 如何从代码(python)创建/修改jupyter笔记本?_Jupyter Notebook - Fatal编程技术网

Jupyter notebook 如何从代码(python)创建/修改jupyter笔记本?

Jupyter notebook 如何从代码(python)创建/修改jupyter笔记本?,jupyter-notebook,Jupyter Notebook,我正在尝试自动化我的项目创建过程,并希望作为其中的一部分,创建一个新的jupyter笔记本,并使用每个笔记本中通常包含的一些单元格和内容(即导入、标题等)填充它 可以通过python实现吗?这是绝对可能的。笔记本只是json文件。这 例如: { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Header 1" ] }, { "cell_type": "c

我正在尝试自动化我的项目创建过程,并希望作为其中的一部分,创建一个新的jupyter笔记本,并使用每个笔记本中通常包含的一些单元格和内容(即导入、标题等)填充它


可以通过python实现吗?

这是绝对可能的。笔记本只是json文件。这 例如:

{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Header 1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2016-09-16T16:28:53.333738",
     "start_time": "2016-09-16T16:28:53.330843"
    },
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "def foo(bar):\n",
    "    # Standard functions I want to define.\n",
    "    pass"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Header 2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 2",
   "language": "python",
   "name": "python2"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.10"
  },
  "toc": {
   "toc_cell": false,
   "toc_number_sections": true,
   "toc_threshold": 6,
   "toc_window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}

虽然凌乱,但它只是一个单元格对象列表。我可能会在实际的笔记本中创建模板并保存它,而不是手动生成初始模板。如果您希望以编程方式添加标题或其他变量,则始终可以将*.ipynb文件中的原始笔记本文本复制到python文件中,并使用字符串格式插入值。

您可以使用nbformat执行此操作。下面是一个例子:

将nbf格式导入为nbf
nb=nbf.v4.新笔记本()
text=”“”\
#我的第一个自动Jupyter笔记本
这是一个自动生成的笔记本。”“”
代码=”“\
%pylab内联
历史(正常(大小=2000),箱子=50)
nb['cells']=[nbf.v4.新的标记单元格(文本),
nbf.v4.新的\u代码\u单元格(代码)]
fname='test.ipynb'
将open(fname,'w')作为f:
nbf.写入(nb,f)

谢谢你的回答!我希望有一个用于添加单元格的API,因为我担心新版本会破坏硬编码模式……请注意,auto gen笔记本可以变得相当复杂,因为可以将多对标记和代码单元格附加到传递给
nb['cells']
的列表中。