与python cmd模块分页

Gra*_*Gra 9 python pagination cmd

我正在使用cmd模块对Python应用程序进行原型设计.

给用户的一些消息会很长,我想对它们进行分页.将显示消息的前10行(或可配置的数字)行,按空格键将显示下一页,直到消息结束.

我不想在这里重新发明一些东西,有一个简单的意思来实现这个功能吗?

Yon*_*lan 5

简单的事情就是在运行时通过“ less”或类似的命令来传递脚本。

不过,这是一种简单的方法,可以满足您的需求:

def print_and_wait(some_long_message):
    lines = some_long_message.split('\n')
    i=0
    while i < len(lines):
        print '\n'.join(lines[i:i+10])
        raw_input("press enter to read more...")
        i += 10
Run Code Online (Sandbox Code Playgroud)

您也可以考虑使用诅咒。


Tre*_*out 3

正如 Yoni 上面所说,执行此操作的正确方法是提供一个打印方法,该方法可以在正在运行的 cmd 实例中自动分页。Cmd 的构造函数采用 stdin 和 stdout 参数。如此简单,提供一个像 stdout 一样工作并支持您的分页打印方法的对象。

class PagingStdOut(object):
    def write(self, buffer, lines_before_pause=40):
        # do magic paging here...
Run Code Online (Sandbox Code Playgroud)