如何使用语法高亮显示(作为输出单元格).py文件的内容?

Mat*_*ias 14 ipython ipython-notebook

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

我也知道%less,%more并且%pycat,它在分页器中显示文件的内容(这意味着在笔记本中它显示在屏幕底部的分割窗口中).

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

即如下所示,但结果的语法高亮:

with open('my_file.py', 'r') as f:
    print(f.read())
Run Code Online (Sandbox Code Playgroud)

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

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

jgo*_*ann 16

基于@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)))
Run Code Online (Sandbox Code Playgroud)


tvt*_*173 6

10 年后,现在有了一个更简单的解决方案: https://ipython.readthedocs.io/en/stable/api/ generated/IPython.display.html#IPython.display.Code

from IPython.display import Code

Code(filename='my_file.py', language='python')
Run Code Online (Sandbox Code Playgroud)


Mat*_*att 3

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