Ответ 1
Нет никакого способа сделать это с текущей магией, но это довольно легко, используя pygments и возвращающий IPython.display.HTML(...)
.
Мне известно о функции %load
(ранее %loadpy
), которая загружает содержимое файла (или URL,...) в новую ячейку ввода (которая может быть выполнена впоследствии).
Я также знаю %less
, %more
и %pycat
, которые показывают содержимое файла в пейджере (что означает, что в записной книжке он отображается в разделенном окне внизу экрана).
Есть ли (волшебная) команда для загрузки файла и отображения его содержимого (с подсветкой синтаксиса) в выходной ячейке?
т.е. что-то вроде следующего, но с подсветкой синтаксиса результата:
with open('my_file.py', 'r') as f:
print(f.read())
Я хочу, чтобы содержимое файла сохранялось в файле .ipynb, но я не хочу, чтобы он выполнялся, когда я делаю Cell → Run All.
Есть ли команда, похожая на %psource
, которая показывает исходный код в выходной ячейке вместо пейджера?
Нет никакого способа сделать это с текущей магией, но это довольно легко, используя pygments и возвращающий IPython.display.HTML(...)
.
Пример кода, основанного на ответе @Matt:
from pygments import highlight
from pygments.lexers import PythonLexer
from pygments.formatters import HtmlFormatter
import IPython
with open('my_file.py') as f:
code = f.read()
formatter = HtmlFormatter()
IPython.display.HTML('<style type="text/css">{}</style>{}'.format(
formatter.get_style_defs('.highlight'),
highlight(code, PythonLexer(), formatter)))