18

我知道将文件(或 URL,...)的内容加载到新输入单元格(之后可以执行)的%load函数(以前)。%loadpy

我也知道%less,%more%pycat, 它在寻呼机中显示文件的内容(这意味着在笔记本中它显示在屏幕底部的拆分窗口中)。

是否有(魔术)命令来加载文件并在输出单元格中显示其内容(带有语法突出显示)?

即类似于以下内容,但结果的语法突出显示:

with open('my_file.py', 'r') as f:
    print(f.read())

我希望文件内容与 .ipynb 文件一起存储,但我不希望在执行Cell -> Run All时执行它。

是否有类似于%psource在输出单元格而不是寻呼机中显示源代码的命令?

4

2 回答 2

20

基于@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)))
于 2014-01-21T19:19:48.710 回答
3

不,目前的魔法没有办法做到这一点,但是使用pygments和返回非常容易IPython.display.HTML(...)

于 2013-10-06T10:56:27.947 回答