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

3 投票
2 回答
1294 浏览
提问于 2025-04-17 18:50

我有一个程序,它会输出大约300到1000行的数据。我不想让它一次性输出所有内容,而是希望能有一个类似手册页的界面,先显示大约50行,然后用户可以按'f'或'b'键来翻页查看。请问在Python中有没有办法做到这一点?

注意:我想把这个程序分享出去,不想让用户必须把输出内容通过管道传给less或more。此外,输出是在程序中间进行的,并不是程序唯一的输出,所以我不太确定这样做是否可行。

2 个回答

2

注意:我绝对不会这样做,我觉得这会让用户体验很糟糕,但是……

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

然后把你所有命令的输出写入这个像文件一样的对象:pager.stdin

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

撰写回答