将json ipython notebook(.ipynb)转换为.py文件

时间:2016-06-13 19:29:46

标签: python jupyter-notebook ipython nbconvert

如何将IPython笔记本文件(带有.ipynb扩展名的json)转换为常规.py模块?

13 个答案:

答案 0 :(得分:52)

从笔记本菜单中,您可以将文件直接保存为python脚本。转到'文件'选项菜单,然后选择下载为'在那里你会看到一个Python(.py)'选项。

enter image description here

另一种选择是从命令行使用nbconvert:

jupyter nbconvert --to script 'my-notebook.ipynb'

看看here

答案 1 :(得分:15)

根据https://ipython.org/ipython-doc/3/notebook/nbconvert.html,您正在寻找带有--to脚本选项的nbconvert命令。

ipython nbconvert notebook.ipynb --to script

答案 2 :(得分:3)

简而言之:此命令行选项会将mynotebook.ipynb转换为python代码:

jupyter nbconvert mynotebook.ipynb --to python

注意:这与above答案不同。 ipython已重命名为jupyter。旧的可执行文件名(ipython)已弃用。

更多详情: jupyter命令行有一个nbconvert参数,可帮助将笔记本文件(*.ipynb)转换为各种其他格式。

您甚至可以使用相同的命令将其转换为这些格式中的任何一种,但使用不同的--to选项:

  • asciidoc
  • 定制
  • HTML
  • 胶乳。 (如果你想在会议/期刊论文中粘贴代码,真棒。)
  • 降价
  • 笔记本
  • PDF
  • RST
  • 脚本
  • 滑动。 (Whooh!转换为幻灯片以便于演示)

相同的命令jupyter nbconvert --to latex mynotebook.ipynb

有关详情,请参阅jupyter nbconvert --help。有很多选择。您甚至可以在转换之前先执行代码,使用不同的日志级别选项等。

答案 3 :(得分:1)

  1. 转到https://jupyter.org/
  2. 点击nbviewer
  3. 输入文件的位置并进行渲染。
  4. 单击视图作为代码(显示为)

答案 4 :(得分:1)

你可以用它来做到这一点:

pip install ipynb-py-convert

然后在您的终端上运行它以将 .py 文件转换为 .ipynb :

ipynb-py-convert Ex/abc.py Ex/abc.ipynb

将 .ipynb 文件转换为 .py :

ipynb-py-convert Ex/abc.ipynb Ex/abc.py

答案 5 :(得分:0)

您可以使用以下脚本将jupyter notebook转换为Python脚本,或直接查看代码。

为此,请将以下内容写入文件cat_ipynb,然后写入chmod +x cat_ipynb

#!/usr/bin/env python
import sys
import json

for file in sys.argv[1:]:
    print('# file: %s' % file)
    print('# vi: filetype=python')
    print('')
    code = json.load(open(file))

    for cell in code['cells']:
        if cell['cell_type'] == 'code':
            print('# -------- code --------')
            for line in cell['source']:
                print(line, end='')
            print('\n')
        elif cell['cell_type'] == 'markdown':
            print('# -------- markdown --------')
            for line in cell['source']:
                print("#", line, end='')
            print('\n')

然后您可以使用

cat_ipynb your_notebook.ipynb > output.py

或直接与vi一起显示

cat_ipynb your_notebook.ipynb | view -

答案 6 :(得分:0)

首先,您需要在下面安装此软件包:

sudo apt install ipython
jupyter nbconvert --to script [YOUR_NOTEBOOK].ipynb

两个选项可用--to python或--to = python 我的感觉很好 jupyter nbconvert-to python while.ipynb

jupyter nbconvert --to python while.ipynb 

[NbConvertApp]将笔记本while.ipynb转换为python    [NbConvertApp]向while.py中写入758个字节

pip3 install ipython

如果它对您不起作用,请通过pip3。

pip3 install ipython

答案 7 :(得分:0)

您绝对可以使用以下命令使用nbconvert来实现:

jupyter nbconvert --to python while.ipynb 

但是,由于个人原因,出于以下几个原因,我建议您不要使用它:

  1. 能够转换为简单的Python代码是一回事,而拥有所有正确的抽象,类访问和方法设置则是另一回事。如果将笔记本代码转换为Python的全部目的是要使代码和笔记本可以长期维护,则仅使用nbconvert是不够的。唯一的方法是手动检查代码库。
  2. 笔记本从本质上促进了编写无法维护的代码(https://docs.google.com/presentation/d/1n2RlMdmv1p25Xy5thJUhkKGvjtV-dkAIsUXP-AL4ffI/edit#slide=id.g3d7fe085e7_0_21)。在顶部使用nbconvert可能只是一个创可贴。可能会在整个示例中散布导入促进不易维护的代码的具体示例,硬编码的路径不在一个简单的地方可以查看,类抽象也可能不存在,等等。
  3. nbconvert仍会混合执行代码和库代码。
  4. 评论仍然不存在(可能不在笔记本中)。
  5. 仍然缺少单元测试等。

因此,总而言之,没有一种好的方法可以立即将python笔记本转换为可维护的,健壮的python模块化代码,唯一的方法是手动进行手术。

答案 8 :(得分:0)

Jupytext允许在命令行上进行这种转换,并且重要的是,您可以再次从脚本返回到笔记本(甚至是已执行的笔记本)。参见here

答案 9 :(得分:0)

复制所需文件夹中的所有(''.ipynb)文件,然后执行:

import os    

desired_path = 'C:\\Users\\Docs\\Ipynb Covertor'

os.chdir(desired_path)

list_of_directory = os.listdir(desired_path)

for file in list_of_directory:
        os.system('ipython nbconvert --to script ' + str(file))

答案 10 :(得分:0)

一种方法是将脚本上传到Colab上,然后从File -> Download .py以.py格式下载脚本。

答案 11 :(得分:0)

您可以在同一目录中运行 .py 文件:

import json

files = ["my_first_file_name.ipynb", "my_second_file_name.ipynb"]

for file in files:
    code = json.load(open(file))
    py_file = open(f"{file}.py", "w+")

    for cell in code['cells']:
        if cell['cell_type'] == 'code':
            for line in cell['source']:
                py_file.write(line)
            py_file.write("\n")
        elif cell['cell_type'] == 'markdown':
            py_file.write("\n")
            for line in cell['source']:
                if line and line[0] == "#":
                    py_file.write(line)
            py_file.write("\n")

    py_file.close()

我根据 Syrtis Major 的回答重写了这段代码。

答案 12 :(得分:0)

将 Ipynb 目录文件转换为 .py

import os

for fname in os.listdir():
    if fname.endswith('ipynb'):
        os.system(f'jupyter nbconvert {fname} --to python')