McBear Holden
McBear Holden

Reputation: 5901

How to print stdout excerpt in IPython

In a Linux terminal, when the output of one command is too long to read in one page, I can do this:

cat file | less

so that I can read and scroll up and down the output from the cat file.

How can I do this in IPython?

For example, I tried this and it didn't work:

whos | less

My original problem is that the output from whos is too much to be seen by doing Shift+Page Up and I don't want to change the scroll buffer.

Upvotes: 17

Views: 8453

Answers (4)

Sven Marnach
Sven Marnach

Reputation: 601401

In IPython, you can use %page obj to show the object obj using your standard pager (usually less). Alternatively, you can increase the scroll buffer of your terminal, which might be convenient in any case.

%page obj -- display object similar to IPython default display (repr-like), using pager if output size requires

%page -r obj -- display object similar to print, using pager if size requires

%page can only take a plain name or attribute reference. It cannot evaluate an arbitrary expression, but you can use a temporary variable to work around this limitation:

tmp = ex * pr + ess - ion
%page tmp

Upvotes: 24

KFL
KFL

Reputation: 17850

On my IPython (version 7.21) piping does work, after the ! prefix.

Basic usage:

!cat ~/.vimrc | less

Works even with python variable substitution:

# send `some_large_python_str` to pastebin
!echo "{some_large_python_str}" | pastebin

Note the use of quote " around the substitution {...}.

Upvotes: 2

bstpierre
bstpierre

Reputation: 31186

Use of the pager should be automatic.

From the manual:

In order to configure less as your default pager, do the following:

  1. Set the environment PAGER variable to less.
  2. Set the environment LESS variable to -r (plus any other options you always want to pass to less by default). This tells less to properly interpret control sequences, which is how color information is given to your terminal.

For the bash shell, add to your ~/.bashrc file the lines:

export PAGER=less
export LESS=-r

Upvotes: 3

das_weezul
das_weezul

Reputation: 6142

System shell access

Any input line beginning with a ! character is passed verbatim (minus the !, of course) to the underlying operating system. For example, typing !ls will run ‘ls’ in the current directory.

Source: http://ipython.scipy.org/doc/rel-0.9.1/html/interactive/reference.html#id1

Upvotes: 0

Related Questions