Ответ 1
print "\033c"
работает в моей системе.
Вы также можете кэшировать escape-последовательность четкого экрана, создаваемую командой clear
:
import subprocess
clear_screen_seq = subprocess.check_output('clear')
затем
print clear_screen_seq
в любое время, когда вы хотите очистить экран.
tput clear
команда, которая создает ту же последовательность, определенную в 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")
.
Здесь находится полный порт Python команды clear.c
:
#!/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)