Безопасно очистить консоль
Мне нужно очистить консоль, казалось бы, ведь можно использовать
os.system('cls' if os.name == 'nt' else 'clear')
Но на os жалуется dlint что это НЕ безопасный вариант. И советует использовать "subprocess"
Я пробую subprocess.run('cls', shell=True)
И теперь dlint жалуется что использовать shell=True не безопасно!
Я ставлю shell=False - Мой код не работает...
Как безопасно очистить консоль? Спасибо за любую полезную информацию!
Ответы (1 шт):
Автор решения: eri
→ Ссылка
Включить совместимость с vt100 и чистить эскейпом.
if os.name == 'nt':
import ctypes
kernel32 = ctypes.windll.kernel32
kernel32.SetConsoleMode(kernel32.GetStdHandle(-11), 7)
print("\x1Bc" or "\x1b[2J", end='', flush=True)
Где 7 = ENABLE_PROCESSED_OUTPUT | ENABLE_WRAP_AT_EOL_OUTPUT | ENABLE_VIRTUAL_TERMINAL_PROCESSING, а -11 = open('r'\\.\CONOUT$'').fileno().
Интересно как оно поведет себя в gitbash и powershell - проверьте - отпишитесь в комментах.