【问题标题】:How do I save a Beaker notebook as straight python/r/...?如何将 Beaker 笔记本保存为直接 python/r/...?
【发布时间】:2016-04-04 20:47:39
【问题描述】:
我刚刚发现了 Beaker Notebook。我喜欢这个概念,并且非常渴望将它用于工作。为此,我需要确保我可以以其他格式共享我的代码。
问题
假设我在 Beaker 笔记本中编写纯 Python:
- 我可以像在 iPython Notebook/Jupyter 中一样将其保存为 .py 文件吗?
- 如果我写一个纯 R Beaker 笔记本,我可以这样做吗?
- 如果我用 Python 和 R 编写了一个混合(多语言)笔记本,我可以将它保存到例如Python,存在 R 代码但被注释掉了?
- 可以说以上都不可能。将 Beaker Notebook 文件作为文本文件查看,它似乎以 JSON 格式保存。我什至可以找到对应的单元格,例如Python,R。编写一个执行上述 1-3 的 python 脚本似乎并不太具有挑战性。我错过了什么吗?
谢谢!
PS - 没有 Beaker 笔记本标签!?不好的迹象...
【问题讨论】:
标签:
python
r
jupyter-notebook
data-science
beaker-notebook
【解决方案1】:
复制导出的基础知识真的没有那么难:
#' Save a beaker notebook cell type to a file
#'
#' @param notebook path to the notebook file
#' @param output path to the output file (NOTE: this file will be overwritten)
#' @param cell_type which cells to export
save_bkr <- function(notebook="notebook.bkr",
output="saved.py",
cell_type="IPython") {
nb <- jsonlite::fromJSON(notebook)
tmp <- subset(nb$cells, evaluator == cell_type)$input
if (length(tmp) != 0) {
unlink(output)
purrr::walk(tidyr::unnest(tmp, body), cat, file=output, append=TRUE, sep="\n")
} else {
message("No cells found matching cell type")
}
}
我不知道 Jupyter 对“魔法”的东西做了什么(天哪,笔记本的人怎么能认真地用“魔法”这样的名字来对待它)。
这可以大大增强,但它可以让您了解您所询问的基本内容。