Skip to main content

Python module that pages output to the screen, reads keys and console dimensions without executing external utils.

It was meant to be included in standard library http://bugs.python.org/issue8408

Author: anatoly techtonik <techtonik@gmail.com>
License: Public Domain (or MIT if a license is required)

Demo

python -m pager <file>
<command> | pager.py     (Windows only - see issue #7)
pager.py < <file>        (Windows only)

# run manual tests that are also a demo
python -m pager --test

Status

3.3 (stable)
  • fix critical issue #6: 3.2 Broken on Linux, thanks Calvin Spealman (@ironfroggy) for reporting

  • reading content from stdin is Windows only feature for now (see issue #7)

3.2 (broken on Linux)
  • abort pagination if ESC or ‘q’ keys are pressed

  • prompt callback is now able to abort pagination by returning False

3.1 (broken on Linux)
  • supports piped input (tested on Windows)

3.0 (alpha) - API break in getch() function
  • reverted getch() behaviour changed in 2.0 - now getch() again returns single char

  • new constants with underline for getch() keys

  • new getchars() function that always returns list

2.2 (stable)
  • Linux: fix regression in version 2.1 - wrong name for _get_unix call produced NameError on this platform (issue #6, thanks Calvin Spealman for report)

2.1 (broken on Linux)
  • split getch() into _getch_unix() and _getch_windows() and detect correct flavor at import time (speedup)

2.0 (stable) - API break in getch() function
  • getch() now always returns list of characters (previously it could return single char). This is done to simplify the task of detecting keys from the returned result

1.4 (stable)
  • pager.py <file>

  • Linux: termios comments, docs and preparation for very likely API break in getch() function

1.3 (stable)
  • Windows: Python 3 requires getwch()

  • Windows: fix ENTER LEFT UP RIGHT DOWN ESC key codes

1.2 (stable)
  • add names for ENTER LEFT UP RIGHT DOWN ESC keys

  • manual tests for getch() (fixes bug #4)

  • dumpkey() helper function to get hex dump of a value returned by getch()

1.1 (stable)
  • Python 3 compatibility

  • echo() helper function for unbuffered output (in Py3 output doesn’t appear immediately on screen unless it ends with newline)

1.0 (stable)
  • getch() now returns list of chars for special keys (fixes bug #1 when special key skipped several pages)

  • page() callbacks receive obligatory pagenumber param

  • default page() callback now shows page number

0.2 (stable)
  • do not insert blank line between pages

0.1 (stable)
  • shows content page by page

  • allows to get console/terminal dimensions

  • works on Windows

  • works on Linux

API (output)

..function:: page(content, [pagecallback=prompt])

Output content iterable, calling pagecallback function after each page with page number as a parameter. pagecallback function may return False to terminate pagination.

Default prompt() callback shows page number with ‘Press any key to continue … ‘ prompt, waits for keypress and aborts if ‘q’, ESC or Ctrl-C are pressed.

..function:: echo(msg)

Print msg to the screen without linefeed and flush the output.

..function:: getwidth()

Return width of available window in characters. If detection fails, return value of standard width 80. Coordinate of the last character on a line is -1 from returned value.

..function:: getheight()

Return available window height in characters or 25 if detection fails. Coordinate of the last line is -1 from returned value.

API (input)

..function:: getch()

Wait for keypress, return first char generated as a result.

Arrows and special keys generate sequence of chars. Use getchars function to receive all chars generated or present in buffer.

..function:: getchars()

Wait for keypress. Return list of chars generated as a result. More than one char in result list is returned when arrows and special keys are pressed. Returned sequences differ between platforms, so use constants defined in this module to guess correct keys.

..function:: dumpkey(key)

Helper to convert result of getch (string) or getchars (list) to hex string.

Credits

Danny Yoo for getch()-like unbuffered character reading recipe
Calvin Spealman (@ironfroggy), issue #6

References

Excellent tutorials for Win32 Console by Adrian Worley
Console Reference on MSDN
Public Domain Curses library maintained by William McBrine
Ioctl (input/output control) introduction from Wikipedia
Linux Programmer’s Manual - ioctls for terminals and serial lines

Release files for pager 3.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pager 3.3
File Size Uploaded
pager-3.3.tar.gz 10.8 kB Details

Release files / pager-3.3.tar.gz

Download URL pager-3.3.tar.gz
Size 10.8 kB
Tags Source
SHA-256 checksum
How to use checksums
18aa45ec877dca732e599531c7b3b0b22ed6a4445febdf1bdf7da2761cca340d
BLAKE2b-256 checksum
How to use checksums
5fa195f8605e50c0ccc85ae53f63f5c4cb83b72f71fbd049a0e8259913e2cc22
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

This release

3.3 This release

1 release file

3.2

1 release file

3.1

1 release file

3.0

1 release file

2.2

1 release file

2.1

1 release file

2.0

1 release file

1.4

1 release file

1.3

1 release file

1.2

1 release file

1.1

1 release file

1.0

1 release file

0.2

1 release file

0.1

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page