Jupyter Notebook:在循环中以编程方式运行Notebook单元

时间:2018-11-30 11:36:45

标签: javascript python jupyter-notebook ipython cell

我想在一个函数内run a specific jupyter code cell。我发现执行单元格的唯一选择是:

IPython.display.Javascript("Jupyter.notebook.execute_cells([4])")

这是可行的,但是一旦我将代码实现到python函数中,它就不再做任何事情:

if version_val == ():
        IPython.display.Javascript("Jupyter.notebook.execute_cells([4])")

这是我尝试执行的全部代码(每个单元格都标记在一个新块中):

1:

import os
import ipywidgets as widgets
import IPython
from IPython.display import Javascript
import plotly as py
import plotly.graph_objs as go

2:

if os.path.exists("Test"):
    test_exists = True
else:
    test_exists = False
    print("Found no folder named 'Test'!")

if test_exists:
subfolder = os.listdir("Test")

3:

enter2 = widgets.Button(description = "Enter")
version_val = ()
def update_d(self):
    IPython.display.clear_output()
    global dt
    dt = dropdown_testcase.value
    global subsubfolder
    subsubfolder = os.listdir(r"Test\{}".format(dt))
    global dropdown_version
    dropdown_version = widgets.SelectMultiple(options=subsubfolder, description="Mark Both <br> for <br>Comparison")
    display(dropdown_version)
    enter2.on_click(start_all)
    display(enter2)

def start_all(self):
    global version_val
    version_val = dropdown_version.value
    if version_val == ():
        print("Choose your data !")
    if version_val == ('Files',):
        IPython.display.Javascript("Jupyter.notebook.execute_cells([3])")



if test_exists:
    dropdown_testcase = widgets.Dropdown(options=subfolder, description="Testcase")
    enter = widgets.Button(description = "Enter")
    enter.on_click(update_d)
    display(dropdown_testcase)
    display(enter)

4:

x = [0,1,2,3]
y = [0,1,2,3]

trace = [go.Scatter(x=x, y=y, mode="markers")]
fig = go.Figure(data=trace)

py.offline.iplot(fig)

我需要在最后一个单元格中执行绘图。

它需要您在Notebook文件夹中创建一个文件夹“ Test”,以及一个名为“任意”的子文件夹。并且在该子文件夹中必须有一个名为“文件”的子文件夹。

有人知道如何解决吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

(我的回答与如何run a specific jupyter code cell有关)

在Jupyter笔记本上,您可以使用In[]Out[]访问单元格的内容。这是一个简单的代码可以尝试:

假设代码单元[13]已经完成一些计算:

In [13]:   1+2+3+4+5
Out [13]:  15

在同一笔记本中的某个位置,您可以像这样访问和运行该单元格中的代码:

print("Result from execution the cells above:", eval(In[13]), Out[13])

您应该得到的结果为

('Result from execution the cell above:', 15, 15)

希望这会有所帮助。