86

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

4

14 回答 14

134

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

在此处输入图像描述

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

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

看看这里

于 2016-06-13T21:12:09.177 回答
30

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

ipython nbconvert notebook.ipynb --to script
于 2016-06-13T21:05:43.130 回答
22

简而言之:此命令行选项转换mynotebook.ipynbpython代码:

jupyter nbconvert mynotebook.ipynb --to python

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


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

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

  • asciidoc
  • 风俗
  • html
  • 乳胶。(如果您想在会议/期刊论文中粘贴代码,那就太棒了)。
  • 降价
  • 笔记本
  • pdf
  • Python
  • 第一次
  • 脚本
  • 幻灯片。(哇哦!转换为幻灯片以便于演示)

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

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

于 2018-06-10T19:26:11.373 回答
9

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

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
于 2021-03-10T13:41:41.633 回答
4

首先你需要在下面安装这个包:

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] 将 758 字节写入 while.py

pip3 install ipython

如果它不适合你尝试,通过 pip3。

pip3 install ipython
于 2019-02-22T21:53:54.000 回答
2

您绝对可以使用以下命令通过 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模块化代码并没有什么好的方法,唯一的方法是手动进行手术。

于 2019-12-10T03:53:53.900 回答
1

您可以使用以下脚本将 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 -

于 2019-01-04T08:06:02.167 回答
1
  1. 转到https://jupyter.org/
  2. 点击nbviewer
  3. 输入文件的位置并渲染它。
  4. 点击view as code(显示为< />)
于 2019-04-07T01:50:21.147 回答
1

一种方法是将您的脚本上传到 Colab 并以 .py 格式从File -> Download .py

于 2020-10-06T11:52:31.990 回答
1

您可以在同一目录中运行 .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 的回答重写了这段代码。

于 2021-03-23T13:18:35.930 回答
1

将 Ipynb 目录文件转换为 .py

import os

for fname in os.listdir():
    if fname.endswith('ipynb'):
        os.system(f'jupyter nbconvert {fname} --to python')
于 2021-05-01T09:50:05.057 回答
0

复制 Desired 文件夹中的所有 (''.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))
于 2020-05-07T20:33:31.037 回答
0

在Ubuntu 20.04上测试

安装 PIP 所需的软件包

$ pip install ipython
$ pip install nbconvert

安装所需的软件包

$ sudo apt-get install texlive-xetex texlive-fonts-recommended texlive-plain-generic

方法一

使用jupyter nbconvert命令转换为不同的格式

源文件 pro.ipynb

pro.ipynb

  • 转换为ASCII

    $ jupyter nbconvert --to asciidoc pro.ipynb
    
  • 转换为pdf

    $ jupyter nbconvert --to pdf pro.ipynb
    
  • 转换为python

    $ jupyter nbconvert --to python pro.ipynb
    

方法二

通过 python 代码转换 ipynb 项目使用pyplot的savefig方法:

pro.ipynb

import matplotlib.pyplot as plt
%matplotlib inline
exp_vals=[1400,600,300,410,250]
exp_labels=['Home Rent','Food','Phone/Internet Bill','Car','Other Utilities']
plt.axis('equal')
plt.pie(exp_vals,labels=exp_labels,radius=2,autopct='%0.1f%%',shadow=True,explode=[0,0.5,0,0.3,0],startangle=20)
# plt.show()
plt.savefig('piechart.jpg',bbox_inches='tight',pad_inches=2,transparent=True,edgecolor='r')

它生成的 piechart.png 图像:

饼图.png

   Hope this helps to convert your ~(`)/\/\/\_ [Python] code
于 2021-12-19T03:33:21.957 回答
-1

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

于 2020-01-02T19:16:50.363 回答