Python – 更优雅地清除终端屏幕

我知道你可以通过使用os.system执行clear来清除shell,但这种方式对我来说似乎非常混乱,因为命令记录在历史记录中,并且被命名为命令作为用户运行到OS.

我想知道是否有更好的方法来清除命令行脚本中的输出?

解决方法:

print "\033c"

适用于我的系统.

您还可以缓存clear命令生成的clear-screen转义序列:

import subprocess
clear_screen_seq = subprocess.check_output('clear')

然后

print clear_screen_seq

任何时候你想要清除屏幕.

产生相同序列的tput clear command在POSIX中定义.

您可以使用curses来获取序列:

import curses
import sys

clear_screen_seq = b''
if sys.stdout.isatty():
    curses.setupterm()
    clear_screen_seq = curses.tigetstr('clear')

优点是您不需要调用curses.initscr()来获取具有.erase(),.clear()方法的窗口对象.

要在Python 2和3上使用相同的源,可以使用os.write()函数:

import os
os.write(sys.stdout.fileno(), clear_screen_seq)

我的系统上的clear命令也尝试使用tigetstr(“E3”)清除回滚缓冲区.

这是clear.c command的完整Python端口:

#!/usr/bin/env python
"""Clear screen in the terminal."""
import curses
import os
import sys

curses.setupterm()
e3 = curses.tigetstr('E3') or b''
clear_screen_seq = curses.tigetstr('clear') or b''
os.write(sys.stdout.fileno(), e3 + clear_screen_seq)
上一篇:svn 更新失败,clear up报错 splite3工具解决过程


下一篇:Android:如何通过adb清除应用缓存并保留用户数据?