在命令行程序中创建“可滚动”输出

时间:2013-03-12 18:22:33

标签: python

我有一个程序可以输出300-1000行数据。我不希望它一次全部输出,我希望它有一个类似联机的界面,它将显示前50行左右的输入,然后用户可以按'f'或'b'来浏览页面。有没有办法在Python中执行此操作?

注意:我想分发程序,我不想强​​迫用户将输出管道输出到更少/更多。此外,输出发生在程序的中间,并不是程序的唯一输出,所以我不确定这是否会以任何方式工作。

2 个答案:

答案 0 :(得分:2)

注意:我永远不会这样做,我认为这是非常糟糕的UIX,但是......

pager = subprocess.Popen(['less'], stdin=subprocess.PIPE)

然后将所有命令的输出写入类似文件的对象:pager.stdin

答案 1 :(得分:2)

你可以做一些非常简陋的事情,如:

# pseudocode 
def display_text(text):
    lines = text.splitlines()
    while lines remaining:
        display next N lines
        wait for key press

要“等待按键”,您可以执行以下操作:http://www.daniweb.com/software-development/python/threads/123777/press-any-key-to-continue