【发布时间】:2016-12-13 20:42:53
【问题描述】:
我尝试用另一个替换给定行上打印的文本。 为此,我一直在使用 ANSI 转义码。 我的问题是当要替换的行在屏幕上不再可见时(但通过向上滚动窗口仍然可见)我似乎无法再修改它了。 这是我的问题的一个简单的独立示例:
import os
nb_lines_term = int(os.popen('stty size', 'r').read().split()[0])
tot_lines = nb_lines_term + 5
for i in range(tot_lines):
print 'line', tot_lines - i
line_to_replace = nb_lines_term + 2
new_str = "\033[F" * line_to_replace # go u
new_str += 'replacing line ' + str(line_to_replace)
new_str += "\033[E" * (line_to_replace - 1) # go back down
print new_str
还有办法访问该线路吗?通过 ANSI 转义码或任何其他方法?
【问题讨论】:
-
请注意,您可能应该为此使用
curses(tigetstr()和朋友)。控制序列是特定于终端的(例如,CSI F是经典 xterm 中的“结束”键)。在 Linux 上,CSI F将光标向上移动一个级别,您正在覆盖终端缓冲区中的字符......不再有任何行可以恢复
标签: python stdout sys ansi-escape