我知道您可以使用 os.system
执行 clear
来清除 shell,但这种方式对我来说似乎很困惑,因为命令已记录在历史记录中并且是乱七八糟地解释为作为操作系统用户运行的命令。
我想知道是否有更好的方法来清除命令行脚本中的输出?
最佳答案
print "\033c"
在我的系统上工作。
您还可以缓存由 clear
命令生成的清屏转义序列:
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)
关于Python - 更优雅地清除终端屏幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34388390/