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

abw*_*333 1 python terminal

几乎是python 中的clearterminal的重复,但不完全一样。

这个问题是:是否存在任何标准的“自带电池”方法来从 python 脚本中清除终端屏幕,或者我必须去诅咒(库,而不是单词)?

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

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

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

ele*_*han 5

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

import subprocess
subprocess.call('reset')
Run Code Online (Sandbox Code Playgroud)

或者,我从这个答案中了解到,您可以使用该命令tput reset,这将立即清除终端,而单独使用该命令reset您会遇到轻微的延迟。也可以这样调用subprocess.call()

subprocess.call(['tput', 'reset'])
Run Code Online (Sandbox Code Playgroud)

有关该reset命令的更多信息,请执行以下操作:

$ man reset
Run Code Online (Sandbox Code Playgroud)

有关该subprocess模块的更多信息,请参阅文档

我已经在 Ubuntu 上测试了这两个版本,但希望它们也能在 OSX/macOS 上运行。如果没有,也许您可​​以subprocess此解决方案结合使用,但我无法对此进行测试。