0

Запуск Jupyter-ноутбука из другого ноутбука

6

Задача: Возможно ли выполнить файл *.ipynb из другого файла *.ipynb и получить возвращаемое значение?

У меня возник вопрос о том, можно ли запустить файл Jupyter Notebook с расширением *.ipynb из другого файла *.ipynb и получить возвращаемое значение. Я знаю, что можно выполнить команду следующим образом:

%run ./called_notebook.ipynb

В файле called_notebook.ipynb содержится следующий код:

def foo():
    print(1)
    return 2
foo()

Однако при выполнении этой команды выводится только "1", и у меня нет возможности обработать возвращаемое значение. Возможно ли это? Существует ли что-то наподобие следующего кода:

a = %run ./called_notebook.ipynb

Если да, то как это реализовать?

Спасибо!

3 ответ(ов)

0

Я бы рекомендовал запустить функцию foo из нового ноутбука. Итак, вы можете сделать это следующим образом:

%run ./called_notebook.ipynb
foo()

На мой взгляд, это лучшая практика при использовании магической команды %run. Храните ваши высокоуровневые API в отдельном ноутбуке (например, foo), но оставляйте вызовы функций на видимых местах в главном ноутбуке.

0

Matt's ответ работает. Однако я хотел запустить called_notebook.ipynb из calling_notebook.ipynb и передать датафрейм из called_notebook в calling_notebook БЕЗ отображения какого-либо вывода.

Я пробовал множество вариантов, но ни один не сработал (теги и т.д.). Тем не менее, следующий код сработал (успешно отключив весь вывод в called_notebook.ipynb):

# для подавления вывода ячейки
%%capture        
%run -n ./called_notebook.ipynb  
df = DFF()       # функция в called_notebook, которая возвращает датафрейм после выполнения всех операций
df.info()  

Таким образом, при запуске called_notebook вывод не отображается, и вы можете передать датафрейм без каких-либо проблем.

0

Вы пробовали использовать специальный тег "%store <переменная>" и "%store -r"? Это способ сохранять данные в пространстве хранения iPython, и вы можете делиться переменными во время выполнения, если блокноты выполняются в одном экземпляре iPython.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь