執行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