Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 创造;“可滚动”;命令行程序中的输出_Python - Fatal编程技术网

Python 创造;“可滚动”;命令行程序中的输出

Python 创造;“可滚动”;命令行程序中的输出,python,Python,我有一个程序,可以输出300-1000行数据。我希望它能有一个类似于手册页的界面,显示前50行左右的输入,然后用户可以按“f”或“b”在页面中导航,而不是一次输出所有内容。在Python中有没有实现这一点的方法 注意:我想分发程序,我不想强迫用户将输出传输到更少/更多。此外,输出发生在程序的中间,并不是程序的唯一输出,所以我不确定这是否会起作用。 注意:我永远不会这样做,我认为这是非常糟糕的UIX,但是 pager = subprocess.Popen(['less'], stdin=subpr

我有一个程序,可以输出300-1000行数据。我希望它能有一个类似于手册页的界面,显示前50行左右的输入,然后用户可以按“f”或“b”在页面中导航,而不是一次输出所有内容。在Python中有没有实现这一点的方法


注意:我想分发程序,我不想强迫用户将输出传输到更少/更多。此外,输出发生在程序的中间,并不是程序的唯一输出,所以我不确定这是否会起作用。 注意:我永远不会这样做,我认为这是非常糟糕的UIX,但是

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

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

您可以做一些非常基本的事情,如:

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

要“等待按键”,您可以这样做:

您可以始终通过管道将其传递到
less
more
为什么不在bash中使用一个简单的
less
命令?从您的问题来看,似乎您正在使用命令行是的,但我希望分发该程序并使其尽可能友好。当然,任何一个首先使用命令行程序的人都可能知道
less
more
,但是为您格式化输出仍然很好。此外,输出不一定是程序的结束。文本输出后,用户将有更多选项。编辑原文以反映搜索“python控制台ui库”的过程,这也给了我一些可能解决您没有提到的问题的方法。。