簡體   English   中英

Python使用ANSI轉義碼在終端上不再可見的行上打印

[英]Python print on lines that are not visible anymore on the terminal with ANSI escape codes

我嘗試用另一行替換打印在給定行上的文本。 為此,我一直在使用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轉義碼或其他任何方法?

簡短:沒有

更長:按照慣例,一旦數據離開可見的屏幕, 終端仿真器可能會將滾動到視線之外的數據保留在只讀回滾區域中。

這反映了硬件終端對仿真器的適應性。 很少有硬件終端可以在更寬的區域內平移(很少有硬件終端可以以任何方式查看滾動到視線之外的數據)。 因此,標准化的功能無法提供此類功能,因為現有的控制序列涉及可見屏幕。

當然也有例外(Hewlett Packard制作了一些有趣的終端,您無法找到一個仿真器)。 xterm(以及一些復制了該功能的部件)使您可以清除回滾。 但是您不太可能找到使您(在程序控制下)回滾並修改回滾區域的內容。

應用程序開發人員管理可見的顯示,使用他們自己的數據在其上寫行,而不是依靠終端來提供視線之外的信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM