Вернуться на предыдущую строку в консоли

298 просмотра
0
0 Комментариев

Для возврата каретки есть \r. Однако он не может перенести её на предыдущую строку.
Очистка всего экрана и запись заново в моём случае полный не вариант.
Так как же вернуть вывод на предыдущую строку без (n)curses и system('cls')?


Добавить комментарий

1 Ответы

Python Опубликовано 16.12.2018
0

Для этого можно подходящую управляющую последовательность ANSI вывести (что даже на Windows можно включить или эмулировать с помощью сolorama модуля). Вы выводите в терминал специальную последовательность байт, которая изменяет текущую позицию курсора. В моём окружении можно вывести ESC [ A (в Питоне: b'\x1b[A') последовательность, чтобы вверх на строчку курсор передвинуть в терминале:

#!/usr/bin/env python
import curses
import os
import sys
import time
 
# http://pubs.opengroup.org/onlinepubs/7908799/xcurses/terminfo.html
curses.setupterm()
UP = curses.tigetstr('cuu1')  # Upline(cursor up)
 
fd = sys.stdout.fileno()
for data in [b'a', b'b', b'\n', b'de', b'fg', UP, b'X', b'Y']:
    os.write(fd, data)
    time.sleep(.5)

Скрипт демонстрирует, что вывод UP последовательности поднимает курсор на строчку.

terminal session

Добавить комментарий
Напишите свой ответ на данный вопрос.
Scroll Up