我正在考虑使用*。Ipynb文件作为真相的来源,并以编程方式将它们“编译”为.py文件,用于计划的作业/任务。

我所理解的做到这一点的唯一方法是通过GUI。有没有办法通过命令行来实现?


当前回答

我知道这是一个老话题了。我也遇到过同样的问题,想通过命令行将.pynb文件转换为.py文件。

我的搜索把我带到了ipynb-py-convert

通过以下步骤,我能够得到.py文件

安装pip Install ipynb-py-convert 通过命令提示符进入ipynb文件所在目录 输入命令

ipynb-py-convert你的文件名。ipynb YourFilename.py

如:。ipynb-py-convert getting-started-with-kaggle-titanic-problem。ipynb getting-started-with-kaggle-titanic-problem.py

上面的命令将创建一个名为“YourFileName.py”的python脚本,根据我们的示例,它将创建一个“getting-start -with-kaggle-titanic-problem.py”文件

其他回答

%notebook foo。ipynb magic命令将当前IPython导出到“foo.ipynb”。

更多信息输入%笔记本?

下面是一种不使用ipython就可以从V3或V4 ipynb中提取代码的快速而简单的方法。它不检查单元格类型等。

import sys,json

f = open(sys.argv[1], 'r') #input.ipynb
j = json.load(f)
of = open(sys.argv[2], 'w') #output.py
if j["nbformat"] >=4:
        for i,cell in enumerate(j["cells"]):
                of.write("#cell "+str(i)+"\n")
                for line in cell["source"]:
                        of.write(line)
                of.write('\n\n')
else:
        for i,cell in enumerate(j["worksheets"][0]["cells"]):
                of.write("#cell "+str(i)+"\n")
                for line in cell["input"]:
                        of.write(line)
                of.write('\n\n')

of.close()

用于转换所有*。Ipynb将当前目录下的文件递归格式化为python脚本:

for i in *.ipynb **/*.ipynb; do 
    echo "$i"
    jupyter nbconvert  "$i" "$i"
done

如果你想转换所有*。Ipynb文件从当前目录转移到python脚本,可以运行如下命令:

jupyter nbconvert --to script *.ipynb

我发现有两种方法可以用命令行将Jupyter Notebook转换为普通的Python脚本。下面是Jupyter笔记本的示例和两个工具的输出。

1. 使用nbconvert

nbconvert是在Jupyter Notebook用户界面下载中作为功能使用的工具。它可以用作命令行工具:

jupyter nbconvert --to python notebook.ipynb

Python脚本示例:

2. 使用jupytext

jupytext是一个保持.ipynb文件与.py文件同步的包。它还可以用于在命令行中转换.ipynb文件。它支持几种类型的转换:

转换为轻格式的Python脚本

jupytext --to py notebook.ipynb             

python脚本示例:

转换为百分比格式的Python脚本

jupytext --to py:percent notebook.ipynb 

Python脚本示例: