执行IPython的笔记本电池在IPython的笔记本,你可以执行一个外部脚本,说test.py
,使用运行魔法:从python脚本
%run test.py
有没有办法做相反,即给予的IPython笔记本,从python脚本访问并运行其中的特定单元?
执行IPython的笔记本电池在IPython的笔记本,你可以执行一个外部脚本,说test.py
,使用运行魔法:从python脚本
%run test.py
有没有办法做相反,即给予的IPython笔记本,从python脚本访问并运行其中的特定单元?
Jupyter(或IPython)的扩展名为“ipynb”的文件是JSON文件。细胞名称为“细胞”[“细胞”]。然后你选择单元格的编号[0]并让源选择“source”[“source”]。作为回报,您将得到一个包含一个元素的数组,因此您需要获取第一个元素[0]。
>>> import json
>>> from pprint import pprint
>>> with open('so1.ipynb', 'r') as content_file:
... content = content_file.read()
...
>>> data=json.loads(content)
>>> data["cells"][0]["source"][0]
'1+1'
>>> eval(data["cells"][0]["source"][0])
2
>>> data["cells"][1]["source"][0]
'2+2'
>>> eval(data["cells"][1]["source"][0])
4
编辑:
要在有跑%运行细胞其他Python脚本:
os.system(data["cells"][2]["source"][0].replace("%run ",""))
或与下列替换它,如果你有-i选项:
execfile(data["cells"][2]["source"][0].replace("%run -i ",""))
有关更多信息,请参阅Run a python script from another python script, passing in args。
谢谢。如果说单元格中有jupyter/ipython特定的魔法,比如%run,有什么我可以做的吗? – Alex
我编辑了答案。 –
IPython有一个像xml一样的格式。你可以解析它并运行你想要的单元格。 –
我知道,但如何? – Alex
请帮忙吗? – Alex