ipython how to execute several history lines

2020-05-15 07:52发布

问题:

In ipython, we can use

_ih[32:39] 

To show history lines between 32 and 39. How can I directly execute these history lines?

回答1:

You can execute code from previous sessions with %recall. See %recall documentation 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


回答2:

I use the list notation:

exec In[34:36]

also, if you use the edit function to edit a chunk, the Out list will have your code in it, so:

exec Out[35]

And my favorite:

edit In[34:38]

because I am a fat-fingered slob who can rarely get it right on the first try.



回答3:

On recent versions of iPython you use the rerun magic-comand:

%rerun 32:39

Documentation on that command: http://ipython.readthedocs.io/en/stable/interactive/magics.html#magic-rerun



回答4:

try %recall, check doc of recall magic command



回答5:

Use the exec statement:

exec(_ih[32:39])

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



回答6:

You can create a named macro from the lines and execute them:

%macro foo 32-38
foo

This is useful if you want to execute the same set of lines more than once. Also the lines do not need to be sequential or in order:

%macro bar 38 37 32-36 42


回答7:

You can edit lines before executing them like so:

edit 1-5

Apparently the syntax changed at some point from the list-notation used in dreynold's answer.