在Python中清除终端(和历史!)

时间:2016-11-13 02:00:18

标签: python terminal

几乎clear terminal in python的副本,但不完全。

这个问题是:任何标准都带有电池"方法存在从python脚本清除终端屏幕,还是我必须去curses(库,而不是单词)?

当您在终端上输入clear时,会出现所有响应 - 屏幕上的所有内容都会消失,除了最顶部的空命令行。但是,如果您愿意,可以向上滚动以查看您之前所做的事情。

我正在寻找一种方法来做到这一点,但是不允许用户向上滚动。它相当于command+K在macOS上的作用。

该应用程序是一款多人纸牌游戏,我不希望玩家能够向上滚动以查看其他玩家的手牌。

2 个答案:

答案 0 :(得分:4)

您可以使用标准库subprocess模块中的subprocess.call()reset命令发送到终端,该终端将重新初始化终端并实际执行与clear类似的操作但也要清除回滚历史。

import subprocess
subprocess.call('reset')

或者,我从this answer了解到,您可以使用命令tput reset,这将立即清除终端,而仅使用reset您将会遇到轻微的延迟。也可以使用subprocess.call()调用此方法,如下所示:

subprocess.call(['tput', 'reset'])

有关reset命令的更多信息,请执行:

$ man reset

有关subprocess模块的详细信息,请参阅the documentation

我已经在Ubuntu上测试了这两个,但希望它也适用于OSX / macOS。如果没有,也许您可​​以将subprocessthis solution结合使用,但我无法对其进行测试。

答案 1 :(得分:2)

Python附带了一个curses模块,它基本上允许您在文本屏幕上实现各种GUI。除非您有意实现滚动文本窗口,否则玩家将无法滚动回上一个输出。终端的回滚功能在curses应用程序中没有做任何事情,因为实际上什么都没有滚动屏幕 - 而是被覆盖了。