在命令行上的python中输入杯子

时间:2011-06-01 09:50:47

标签: python printing terminal

在没有导入操作系统的情况下,是否有一个优雅的解决方案可以在Python中执行此shell脚本?

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

这已经在我脑海中啃了一段时间了:))

由于

3 个答案:

答案 0 :(得分:5)

感谢Ignacio Vazquez-Abrams的投入,这是一个很好的推动正确的方向。 最后,我想出了一些可以帮助我征服世界的小代码:)

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而不是使用print确实是一个更好的解决方案。

答案 1 :(得分:3)

所有terminfo功能都可以通过curses访问。初始化它并使用curses.tiget*()来获得您关心的功能。

答案 2 :(得分:3)

鉴于此

  • 您假设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