【问题标题】:tput cup in python on the commandlinetput cup 在命令行上的 python
【发布时间】:2011-06-01 09:50:46
【问题描述】:

有没有一种优雅的解决方案可以在不导入 os 的情况下在 Python 中执行这个 shell 脚本?

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

这件事已经在我脑海中萦绕了一段时间:)

谢谢

【问题讨论】:

    标签: python printing terminal


    【解决方案1】:

    感谢 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 确实是一个更好的解决方案。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案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
        

        【讨论】:

          猜你喜欢
          • 2014-04-02
          • 2015-02-24
          • 1970-01-01
          • 2021-09-30
          • 2014-04-20
          • 1970-01-01
          • 1970-01-01
          • 2020-01-10
          • 2012-02-26
          相关资源
          最近更新 更多