跳转到主要内容

纯Python终端/控制台分页模块

项目描述

Python模块,将输出分页到屏幕,读取按键和控制台尺寸,而不执行外部实用工具。

它原本打算包含在标准库中 http://bugs.python.org/issue8408

作者:anatoly techtonik <techtonik@gmail.com>
许可:公有领域 (或如果需要许可,则为MIT)

演示

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

状态

3.3 (稳定)
  • 修复关键问题 #6:3.2 在Linux上损坏,感谢Calvin Spealman (@ironfroggy) 报告

  • 从stdin读取内容目前是Windows独有的功能(见问题 #7)

3.2(在Linux上损坏)
  • 如果按下ESC或‘q’键,则终止分页

  • 提示回调现在可以通过返回False来终止分页

3.1(在Linux上损坏)
  • 支持管道输入(已在Windows上测试)

3.0(alpha) - getch()函数中的API中断
  • 撤销了2.0中更改的getch()行为 - 现在getch()再次返回单个字符

  • 为getch()键添加了带下划线的常量

  • 添加了总是返回列表的新getchars()函数

2.2(稳定)
  • Linux:修复2.1版本中的回归 - _get_unix调用名称错误导致NameError(问题 #6,感谢Calvin Spealman 报告)

2.1(在Linux上损坏)
  • 将getch()拆分为_getch_unix()和_getch_windows(),并在导入时检测正确的版本(加速)

2.0(稳定) - getch()函数中的API中断
  • getch() 现在始终返回字符列表(之前它可以返回单个字符)。这样做是为了简化从返回结果中检测键的任务

1.4(稳定版)
  • pager.py <文件名>

  • Linux: termios 注释、文档和对 getch() 函数中非常可能出现的 API 破裂的准备

1.3(稳定版)
  • Windows: Python 3 需要 getwch()

  • Windows: 修复 ENTER LEFT UP RIGHT DOWN ESC 键码

1.2(稳定版)
  • 为 ENTER LEFT UP RIGHT DOWN ESC 键添加名称

  • 对 getch() 进行手动测试(修复了编号为 #4 的错误)

  • dumpkey() 辅助函数,用于获取 getch() 返回值的十六进制转储

1.1(稳定版)
  • Python 3 兼容性

  • echo() 辅助函数用于无缓冲输出(在 Py3 中,输出不会立即显示在屏幕上,除非它以换行符结尾)

1.0(稳定版)
  • getch() 现在返回特殊键的字符列表(修复了编号为 #1 的错误,当特殊键跳过几页时)

  • page() 回调函数必须接收必填的 pagenumber 参数

  • 默认的 page() 回调函数现在显示页码

0.2(稳定版)
  • 在页面之间不插入空白行

0.1(稳定版)
  • 逐页显示内容

  • 允许获取控制台/终端的尺寸

  • 在 Windows 上运行

  • 在 Linux 上运行

API(输出)

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

输出 content 可迭代对象,在每个页面后调用 pagecallback 函数,并将页码作为参数。如果 pagecallback 函数返回 False,则终止分页。

默认的 prompt() 回调函数显示页码,并带有“按任意键继续 …”提示,等待按键,如果按下“q”,ESC 或 Ctrl-C,则终止。

..函数:: echo(msg)

将 msg 打印到屏幕上,不换行,并刷新输出。

..函数:: getwidth()

返回可用窗口的字符宽度。如果检测失败,返回标准宽度 80 的值。一行中最后一个字符的坐标是从返回值中减去 -1。

..函数:: getheight()

返回可用窗口的高度(以字符为单位),或者在检测失败时返回 25。最后一行的坐标是从返回值中减去 -1。

API(输入)

..函数:: getch()

等待按键,返回生成的第一个字符。

箭头和特殊键生成字符序列。使用 getchars 函数接收所有生成的或存在于缓冲区中的字符。

..函数:: getchars()

等待按键。返回生成的字符列表。当按下箭头和特殊键时,结果列表中返回多个字符。返回的序列在不同平台上有所不同,因此请使用在此模块中定义的常量来猜测正确的键。

..函数:: dumpkey(key)

辅助函数,将 getch(字符串)或 getchars(列表)的结果转换为十六进制字符串。

致谢

Danny Yoo 提供了类似 getch() 的无缓冲字符读取配方
Calvin Spealman (@ironfroggy),问题 #6

参考文献

Adrian Worley 提供的关于 Win32 控制台的优秀教程
MSDN 上的控制台参考
William McBrine 维护的公共领域 Curses 库
维基百科上的 Ioctl(输入/输出控制)介绍
Linux 程序员手册 - 终端和串行线的 ioctls

项目详情


下载文件

下载适用于您平台的应用程序文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源代码分发

pager-3.3.tar.gz (10.8 kB 查看哈希值)

上传时间 源代码