Я бы хотел перенаправить вывод скрипта Python в блокнот Jupyter из кода.
Я нашел библиотеки nbformat и nbconvert, которые могут генерировать и выполнять файлы .ipynb, поэтому я просто хотел запустить команду "% run script.py".
Это мой скрипт для запуска:
import numpy as np
import matplotlib.pyplot as plt
def f(x):
return np.exp(x)
x = np.linspace(-1, 3, 100)
print(x)
plt.plot(x, f(x))
Генерация .ipynb:
import nbformat as nbf
nb = nbf.v4.new_notebook()
code = """%run -i temp.py"""
nb['cells'] = [nbf.v4.new_code_cell(code)]
fname = 'test.ipynb'
with open(fname, 'w') as f:
nbf.write(nb, f)
Выполнение .ipynb:
import nbformat
from nbconvert.preprocessors import ExecutePreprocessor
from nbconvert.preprocessors import CellExecutionError
with open("test.ipynb") as f:
nb = nbformat.read(f, as_version=4)
ep = ExecutePreprocessor(timeout=6000, kernel_name='python3')
out = ep.preprocess(nb, {'metadata': {'path': '.'}})
with open('executed_notebook.ipynb', mode='wt') as f:
nbformat.write(nb, f)
Весь текстовый вывод сгенерирован, но, к сожалению, графика там не отображалась. Это файл .ipynb:
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[-1. -0.95959596 -0.91919192 -0.87878788 -0.83838384 -0.7979798\n",
" -0.75757576 -0.71717172 -0.67676768 -0.63636364 -0.5959596 -0.55555556\n",
" -0.51515152 -0.47474747 -0.43434343 -0.39393939 -0.35353535 -0.31313131\n",
" -0.27272727 -0.23232323 -0.19191919 -0.15151515 -0.11111111 -0.07070707\n",
" -0.03030303 0.01010101 0.05050505 0.09090909 0.13131313 0.17171717\n",
" 0.21212121 0.25252525 0.29292929 0.33333333 0.37373737 0.41414141\n",
" 0.45454545 0.49494949 0.53535354 0.57575758 0.61616162 0.65656566\n",
" 0.6969697 0.73737374 0.77777778 0.81818182 0.85858586 0.8989899\n",
" 0.93939394 0.97979798 1.02020202 1.06060606 1.1010101 1.14141414\n",
" 1.18181818 1.22222222 1.26262626 1.3030303 1.34343434 1.38383838\n",
" 1.42424242 1.46464646 1.50505051 1.54545455 1.58585859 1.62626263\n",
" 1.66666667 1.70707071 1.74747475 1.78787879 1.82828283 1.86868687\n",
" 1.90909091 1.94949495 1.98989899 2.03030303 2.07070707 2.11111111\n",
" 2.15151515 2.19191919 2.23232323 2.27272727 2.31313131 2.35353535\n",
" 2.39393939 2.43434343 2.47474747 2.51515152 2.55555556 2.5959596\n",
" 2.63636364 2.67676768 2.71717172 2.75757576 2.7979798 2.83838384\n",
" 2.87878788 2.91919192 2.95959596 3. ]\n"
]
}
],
"source": [
"%run -i temp.py"
]
}
],
"metadata": {},
"nbformat": 4,
"nbformat_minor": 2
}