Jupyter Notebook: программно запускайте ячейку Notebook в цикле - PullRequest
0 голосов
/ 30 ноября 2018

Я хотел бы 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)

И мне нужно, чтобы график выполнялся в последней ячейке.

Требуется создать папку "Тест"«внутри папки ноутбука и подпапки с именем, что вам нравится.И в этой подпапке должна быть подпапка с именем «Файлы».

Кто-нибудь знает, как решить эту проблему?

Заранее спасибо!

1 Ответ

0 голосов
/ 30 ноября 2018

(мой ответ касается вопроса как 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)

Надеюсь, это полезно.

...