В ноутбуке Jupyter есть встроенная магия, которая изменяет содержимое ячейки ноутбука. Например, маска %load
заменяет содержимое текущей ячейки содержимым файла в файловой системе.Jupyter: напишите настраиваемое волшебство, которое изменяет содержимое ячейки в
Как написать специальную магическую команду, которая делает что-то подобное?
То, что я до сих пор печатает что-то стандартный вывод
def tutorial_asset(line):
print('hello world')
def load_ipython_extension(ipython):
ipython.register_magic_function(tutorial_asset, 'line')
И я могу загрузить его с %load_ext tutorial_asset
. Но оттуда я потерялся.
[Изменить]:
Я нашел способ добраться до интерактивного экземпляра оболочки:
@magics_class
class MyMagics(Magics):
@line_magic
def tutorial_asset(self, parameters):
self.shell
Объект self.shell
, кажется, дает полный доступ к множеству ячеек в записной книжке, но единственный способ изменить ячейки - сделать self.shell.set_next_input('print("hello world")')
. Этого недостаточно, потому что в ноутбуке Jupyter эта входная ячейка пропускается, и она не перезаписывает входную ячейку, а вместо нее создает новую ячейку ввода после нее.
Это было бы хорошо, но если я запустил ноутбук второй раз, он создаст другую ячейку ввода с тем же загруженным файлом, что раздражает. Могу ли я загрузить его только один раз, скажем, путем проверки того, находится ли содержимое в следующей ячейке?