我正在考虑使用*。Ipynb文件作为真相的来源,并以编程方式将它们“编译”为.py文件,用于计划的作业/任务。
我所理解的做到这一点的唯一方法是通过GUI。有没有办法通过命令行来实现?
我正在考虑使用*。Ipynb文件作为真相的来源,并以编程方式将它们“编译”为.py文件,用于计划的作业/任务。
我所理解的做到这一点的唯一方法是通过GUI。有没有办法通过命令行来实现?
当前回答
没有文件/目录错误
在我的mint [ubuntu]系统上,尽管已经安装了jupyter,笔记本电脑也可以工作,但jupyter nbconvert——to脚本给出了错误,没有文件/目录,直到我做了一个单独的
sudo apt-get install jupyter-nbconvert
然后一切都很顺利。我只是想添加这个,以防有人碰到同样的错误(对我来说,这是令人困惑的,因为我认为没有文件错误指向笔记本,它肯定在本地目录中,我花了一段时间才意识到子命令没有安装)。
其他回答
给出的解决方案仅适用于转换单个.py文件。下面是一个转换目录及其子目录中的所有.py文件的解决方案。
首先,您需要安装一次只转换一个文件的工具,如ipynb-py-convert
PIP安装ipynb-py-convert
然后cd到你的文件夹。py文件和目录的位置。然后我们在目录和子目录中的所有文件上递归地运行这个工具:
powershell:
foreach ($f在Get-ChildItem "."过滤器*。ipynb-py-convert $f。FullName " $(美元f.FullName.Substring (0, f.FullName.Length-6美元)). py”}
现在,如果你想用批处理转换从。ipynb转换到。py,你可以运行:
foreach ($f在Get-ChildItem "."-Filter *.py -递归){ipynb-py-convert $f。FullName " $(美元f.FullName.Substring (0, f.FullName.Length-3)美元).ipynb "}
这在我探索.py文件时给了我很大帮助。我做了一个项目的副本,运行这段代码,并快速在Jupiter测试代码的不同部分作为单元格等等。我希望它能帮助更多的人。
如果你不想每次保存时都输出一个Python脚本,或者你不想重新启动IPython内核:
在命令行中,你可以使用nbconvert:
$ jupyter nbconvert --to script [YOUR_NOTEBOOK].ipynb
作为一种技巧,您甚至可以通过预先挂起在IPython笔记本中调用上述命令!(用于任何命令行参数)。在笔记本里:
!jupyter nbconvert --to script config_template.ipynb
在添加——to脚本之前,选项是——to python或——to=python,但在转向语言无关的笔记本系统时,它被重命名了。
如果你想转换所有*。Ipynb文件从当前目录转移到python脚本,可以运行如下命令:
jupyter nbconvert --to script *.ipynb
下面是一个jq解决方案,可能在某些情况下有用。记住,笔记本只是json。
jq -r '.cells[] | select(.cell_type == "code") | .source[] | rtrimstr("\n")' $filename
在你的工具链中有Jupytext是很好的。它不仅允许从笔记本到脚本的转换,而且还可以从脚本返回到笔记本。甚至把那本笔记本打印出来。
jupytext --to py notebook.ipynb # convert notebook.ipynb to a .py file
jupytext --to notebook notebook.py # convert notebook.py to an .ipynb file with no outputs
jupytext --to notebook --execute notebook.py # convert notebook.py to an .ipynb file and run it