在只读视图中打开ipython notebooks(* .ipynb)(如html文件)

时间:2016-05-10 17:40:58

标签: python ipython jupyter-notebook

现在随着越来越多的ipython笔记本文件(* .ipynb)的出现,每次我想偷看一些笔记本时都会非常令人不安,我必须为它打开服务器,并且不能以只读模式进行(由于自动保存,如果不是在只读模式下,我可能会在读取文件时意外更改文件)。

我希望这样的事情:ipython notebook mynb.ipynb --read-only可行,但遗憾的是它没有(尽管它仍然创建了一个我不想在只读视图中使用的服务器)。我真正想要的是打开像html文件一样的ipynb文件进行阅读,目前看来缺少ipynb文件的视图,现在笔记本更像是一个黑盒子或近二进制文件。

(PS,我正在使用Linux / Ubuntu。)

8 个答案:

答案 0 :(得分:11)

当您更改笔记本文件的权限时,jupyter的自动保存不会触及它们:

chmod a-w *.ipynb

然后jupyter进入只读模式:

Screenshot of jupyter read-only mode

答案 1 :(得分:10)

试试这个ipynb Viewer。这使ipython笔记本成为静态网页。 ypu也可以使用

将ipyhton笔记本转换为其他格式
ipython nbconvert --to FORMAT notebook.ipynb.

参考Convert Ipython notebook to other formats。使用此功能,您可以将ipython笔记本转换为HTML。

答案 2 :(得分:9)

您可能还想尝试 nteract 应用(https://nteract.io

nteract 是一个桌面应用程序,允许您开发包含散文,可执行代码(几乎所有语言!)和图像的丰富文档。

Here您可以找到有关该应用的详细评论。

它本身是完全免费且非常方便的工具,我经常使用它来查看其他ipynb文件(如果需要)以及快速开发。

答案 3 :(得分:2)

我所建议的最好的方法-仍然有点冗长-使用 ProcessorSupplier<Integer, ValueType> processorSupplier = new ProcessorSupplier<Integer, ValueType>() { public Processor<Integer, ValueType> get() { return new Processor<Integer, ValueType>() { private ProcessorContext context; private KeyValueStore<Integer, Integer> stateStore; public void init(ProcessorContext context) { this.context = context; stateStore = (KeyValueStore) context.getStateStore("MyStore"); this.context.schedule(Duration.ofMillis(5000), PunctuationType.WALL_CLOCK_TIME, (timestamp) -> { Set<Integer> ids = new HashSet<>(); try (KeyValueIterator<Integer, Integer> iter = this.stateStore.all()) { while (iter.hasNext()) { KeyValue<Integer, Integer> entry = iter.next(); ids.add(entry.key); } } List<Document> documentList = createDocuments(dataRetriever, ids); documentList.stream().forEach(document -> context.forward(document.getId(), document)); ids.stream().forEach(id -> stateStore.delete(id)); this.context.commit(); }); } @Override public void process(Integer key, ValueType value) { Long id = key.getId(); stateStore.put(id, id); } @Override public void close() { } }; } }; 创建文件的HTML版本,然后在浏览器中打开它。以下是执行此操作的命令(假设您的浏览器已设置为处理.html文件的默认程序)。只需将nbconvert替换为您的真实笔记本名称即可。

的Linux
yournotebook.ipynb
苹果系统
jupyter nbconvert --to html yournotebook.ipynb --output /tmp/notebook.html &&
xdg-open /tmp/notebook.html

视窗
jupyter nbconvert --to html yournotebook.ipynb --output /tmp/notebook.html &&
open /tmp/notebook.html

(请注意,如果要批量执行此操作,可能是在脚本中循环执行,则可能需要修改上面的命令,以使HTML文件不总是使用相同的文件名,以避免出现竞争情况在浏览器真正开始阅读之前,HTML文件已被覆盖的位置。)

答案 4 :(得分:0)

Intellij IDEA(也可以作为免费的开放源代码社区版本提供)也可以呈现ipynb文件。实际上,它还允许创作笔记本,因此不仅仅是查看器。

可以通过文件类型关联或通过命令行启动器(例如idea foo.pynb)使用它。

答案 5 :(得分:0)

我为此使用Github Gist。您将需要一个Github帐户。

如果在其中为内容复制/粘贴指定* .ipynb文件扩展名,它将检测到该文件并将其格式化为html视图。如果有趣的话,您甚至可以使用链接与某人共享它。除了拥有浏览器之外,不需要其他工具。

虽然我发现格式上有一些小问题,大部分是与输出图有关的,但这种情况很少见。

此处为随机示例:https://gist.github.com/Clockware/aa7e01722579841d5888ca83385a5f1d

答案 6 :(得分:0)

我能够在可视代码中以html格式读取.ipynb文件。您将需要一个python插件来自动检测视觉代码。在那之后,很简单。

答案 7 :(得分:0)

查看 jupyter 笔记本最方便的方法是使用 nb-viewer,使用此实用程序,您只需双击即可打开笔记本(以只读模式)。