2016-11-13 102 views
0

这是差不多重复的clear terminal in python,但不完全。在Python中清除终端(和历史!)

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

所有的响应都会导致在终端上输入clear时发生的情况 - 屏幕上的所有内容都将消失,除非最上方的空白命令行消失。但是,如果你愿意,你可以回滚一下,看看你之前在做什么。

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

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

回答

4

你可以使用subprocess.call()从标准库subprocess模块到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上运行。如果不是,也许你可以使用subprocess加上this solution,但我无法测试。

2

Python自带curses模块,它基本上允许您在文本屏幕上实现GUI排序。除非您有意实现了滚动文本窗口,否则玩家将无法回滚到之前的输出。终端的回滚功能在curses应用程序中不会执行任何操作,因为实际上没有任何事情正在从屏幕上滚动 - 它将被覆盖。