【发布时间】:2011-06-01 09:50:46
【问题描述】:
有没有一种优雅的解决方案可以在不导入 os 的情况下在 Python 中执行这个 shell 脚本?
tput cup 14 15; echo -ne "\033[1;32mtest\033[0m" ; tput cup 50 0
这件事已经在我脑海中萦绕了一段时间:)
谢谢
【问题讨论】:
有没有一种优雅的解决方案可以在不导入 os 的情况下在 Python 中执行这个 shell 脚本?
tput cup 14 15; echo -ne "\033[1;32mtest\033[0m" ; tput cup 50 0
这件事已经在我脑海中萦绕了一段时间:)
谢谢
【问题讨论】:
感谢 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 确实是一个更好的解决方案。
【讨论】:
所有 terminfo 功能都可以通过curses 访问。初始化它并使用curses.tiget*() 获取您关心的功能。
【讨论】:
鉴于此
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
【讨论】: