Tput Cup в Python в командной строке - PullRequest
4 голосов
/ 01 июня 2011

Есть ли элегантное решение для создания этого сценария оболочки в Python без импорта ОС?

    tput cup 14 15; echo -ne "\033[1;32mtest\033[0m" ; tput cup 50 0

Это просто грызло мои мысли уже некоторое время:)

Спасибо

Ответы [ 3 ]

5 голосов
/ 02 июня 2011

Спасибо Игнасио Васкес-Абрамсу за ваш вклад, это был большой толчок в правильном направлении.В конце концов я придумал этот небольшой код, который поможет мне завоевать мир:)

from curses import *
setupterm()

#cols = tigetnum("cols")
#lines = tigetnum("lines")
#print str(cols) + "x" + str(lines)

place_begin = tparm(tigetstr("cup"), 15, 14)
place_end = tparm(tigetstr("cup"), 50, 0)

print place_begin + "-- some text --" + place_end

@TZ.TZIOY, спасибо, я думаю, что использование stdout, а не печати, действительно является лучшим решением.

3 голосов
/ 02 июня 2011

Учитывая, что

  • предполагается, что escape-последовательности ANSI
  • tput cup 14 15 | cat -v отображает ^[[15;16H

, весь предложенный скрипт приводит к следующему Pythonскрипт:

import sys
sys.stdout.write("\033[15;16H\033[1;32mtest\033[m\033[51;1H")
# and a possible sys.stdout.flush() here, depending on your needs
3 голосов
/ 01 июня 2011

Все возможности terminfo доступны через curses. Инициализируйте его и используйте curses.tiget*(), чтобы получить возможности, которые вам нужны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...