3

有没有办法让 IPython 控制台自动重新格式化复制的代码,例如,

In [131]: a = [1, 2, 3]

In [132]: a
Out[132]: [1, 2, 3]

使用标准 Python 提示符,即

>>> a = [1, 2, 3]
>>> a
[1, 2, 3]

动机是:

  1. 行号(也许还有额外的换行符)在这里没有意义。
  2. 标准格式很容易与 doctest 一起使用。

有趣的是,IPython 的 Qt 控制台同时提供“复制”和“复制(原始文本)”,“复制”的默认行为导致以下结果:

a = [1, 2, 3]

a
Out[132]: [1, 2, 3]

显然,可以实现某种自动重新格式化。有没有办法自定义这个功能?

我知道PromptManager哪个可用于自定义显示的提示(例如, http: //nb.nathanamy.org/2012/09/terminal-productivity/)。但是,IPython 提示符(带有数字)在交互式会话中很有用。我只希望重新格式化复制的版本。

4

2 回答 2

1

您可以设置 iPython 配置并查看本文的 ipython 部分

以下是步骤:

1.创建个人资料

$ ipython profile create

2.将以下行修改为~/.config/ipython/profile_default/ipython_config.py

c.PromptManager.in_template = '>>> '

之后,iPython 将像您预期的那样工作。

于 2013-06-20T14:25:45.417 回答
0

我不知道有任何内置方法可以做到这一点,但也许你可以通过定义自己的 %magic 函数来帮助自己。

就像是

坚持文档以了解如何定义和注册自定义魔法,然后尝试以下操作:

from IPython.core.magic import (register_line_magic, register_cell_magic,
                            register_line_cell_magic)

@register_line_magic
def export_prompt(start, end):
    "Exporting input and output within given limits"
    for i in range(start, end):
        in_ = In.get(i)
        out_ = Out.get(i)
        print in_
        print out_

# We delete this to avoid name conflicts for automagic to work
del export_prompt

我自己试试看,看看好不好用。

编辑 似乎它不能立即起作用,你必须弄清楚如何访问InOut内部自定义魔法。但我会留下答案以供参考,也许其他人可以完成样本。

于 2013-02-01T07:24:41.150 回答