ipython如何执行多条历史记录行

时间:2011-09-30 16:01:49

标签: python ipython

在ipython中,我们可以使用

_ih[32:39] 

显示32到39之间的历史记录行。如何直接执行这些历史记录行?

7 个答案:

答案 0 :(得分:20)

您可以使用%recall执行以前会话中的代码。请参阅%recall文档here

#Execute all code from previous session.
%recall ~1/

#Execute all code from two sessions previous the current session.
%recall ~2/

#Execute lines 1 to 5 from previous session.
%recall ~1/1-5

答案 1 :(得分:17)

我使用列表符号:

exec In[34:36]

另外,如果你使用编辑功能来编辑一个块,那么Out列表中会包含你的代码,所以:

exec Out[35]

我的最爱:

edit In[34:38]

因为我是一个胖胖的傻瓜,在第一次尝试时很难做到这一点。

答案 2 :(得分:11)

在最新版本的iPython中,您可以使用重新运行魔术命令:

%rerun 32:39

该命令的文档:http://ipython.readthedocs.io/en/stable/interactive/magics.html#magic-rerun

答案 3 :(得分:10)

尝试%召回, 检查doc of recall magic command

答案 4 :(得分:7)

使用exec声明:

exec(_ih[32:39])

http://docs.python.org/reference/simple_stmts.html#exec

答案 5 :(得分:5)

您可以从行创建命名宏并执行它们:

%macro foo 32-38
foo

如果您想多次执行同一组行,这非常有用。这些行也不需要是顺序的或按顺序排列:

%macro bar 38 37 32-36 42

答案 6 :(得分:2)

您可以在执行之前编辑行,如下所示:

edit 1-5

显然语法在某些时候从dreynold的答案中使用的列表符号改变了。