Ste*_*zyk 218 ipython ipython-notebook
我正在考虑使用*.ipynb文件作为事实的来源,并以编程方式将它们"编译"成.py文件以用于预定的作业/任务.
我理解这样做的唯一方法是通过GUI.有没有办法通过命令行来做?
www*_*iam 359
如果您不想在每次保存时输出Python脚本,或者您不想重新启动IPython内核:
在命令行中,您可以使用nbconvert:
$ jupyter nbconvert --to script [YOUR_NOTEBOOK].ipynb
Run Code Online (Sandbox Code Playgroud)
作为一个黑客,您甚至可以通过预挂起!(用于任何命令行参数)在 IPython笔记本中调用上述命令.在笔记本内:
!jupyter nbconvert --to script config_template.ipynb
Run Code Online (Sandbox Code Playgroud)
之前--to script被加入,可以选择是--to python或--to=python,但它改名朝一个语言无关的笔记本电脑系统的举动.
Bře*_*jek 61
如果要将*.ipynb当前目录中的所有文件转换为python脚本,可以运行如下命令:
jupyter nbconvert --to script *.ipynb
Run Code Online (Sandbox Code Playgroud)
Val*_*tas 18
这是一种快速而肮脏的方法,可以在不使用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()
Run Code Online (Sandbox Code Playgroud)
Spa*_*der 15
按照前面的示例,但使用新的nbformat lib版本:
import nbformat
from nbconvert import PythonExporter
def convertNotebook(notebookPath, modulePath):
with open(notebookPath) as fh:
nb = nbformat.reads(fh.read(), nbformat.NO_CONVERT)
exporter = PythonExporter()
source, meta = exporter.from_notebook_node(nb)
with open(modulePath, 'w+') as fh:
fh.writelines(source.encode('utf-8'))
Run Code Online (Sandbox Code Playgroud)
Way*_*yne 14
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
Run Code Online (Sandbox Code Playgroud)
小智 8
@ Spawnrider的最后一行代码,
fh.writelines(source.encode('utf-8'))
Run Code Online (Sandbox Code Playgroud)
给'TypeError:write()参数必须是str,而不是int'
fh.writelines(source)
Run Code Online (Sandbox Code Playgroud)
虽然工作.
您可以从IPython API执行此操作.
from IPython.nbformat import current as nbformat
from IPython.nbconvert import PythonExporter
filepath = 'path/to/my_notebook.ipynb'
export_path = 'path/to/my_notebook.py'
with open(filepath) as fh:
nb = nbformat.reads_json(fh.read())
exporter = PythonExporter()
# source is a tuple of python source code
# meta contains metadata
source, meta = exporter.from_notebook_node(nb)
with open(export_path, 'w+') as fh:
fh.writelines(source)
Run Code Online (Sandbox Code Playgroud)
使用 nbconvert 6.07 和 jupyter 客户端 6.1.12:
将 jupyter 笔记本转换为 python 脚本
$ jupyter nbconvert mynotebook.ipynb --to python
Run Code Online (Sandbox Code Playgroud)
将 jupyter 笔记本转换为指定输出文件名的 python 脚本
$ jupyter nbconvert mynotebook.ipnb --to python --output myscript.py
Run Code Online (Sandbox Code Playgroud)
将当前目录中的所有 *.ipynb 格式文件递归转换为 python 脚本:
for i in *.ipynb **/*.ipynb; do
echo "$i"
jupyter nbconvert "$i" "$i"
done
Run Code Online (Sandbox Code Playgroud)
小智 5
我知道这是一个旧线程。我遇到了同样的问题,想通过命令行将 .pynb 文件转换为 .py 文件。
我的搜索将我带到了ipynb-py-convert
通过以下步骤,我能够获得 .py 文件
> ipynb-py-convert YourFileName.ipynb YourFilename.py
例如:。ipynb-py-convert 入门与kaggle-titanic-problem.ipynb 入门与kaggle-titanic-problem.py
上面的命令将创建一个名为“YourFileName.py”的 python 脚本,根据我们的示例,它将创建getting-started-with-kaggle-titanic-problem.py文件
| 归档时间: |
|
| 查看次数: |
176242 次 |
| 最近记录: |