我知道你可以通过使用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)