簡體   English   中英

有沒有辦法替換Python中以前輸出的文本?

[英]Is there a way to replace a previously outputted text in Python?

我想做些事情,但是不幸的是我完全不知道該怎么做,我懷疑有人問過。 因此,基本上,我想要的是在先前區域中輸出文本的程序。 我會盡力解釋。

假設我在屏幕上輸出了以下文本:

===========================================================================================



===========================================================================================

我的問題是,有沒有一種方法可以在不使用pygame的情況下,用特定的文本替換行之間的空白行,而無需再次打印行? 是否可以使用例如Python IDLE或直接在終端中使用,還是只能使用pygame或類似的東西?

看起來像這樣,例如:

===========================================================================================

Hello World!

===========================================================================================

您可以將curses庫用於這種純文本UI。 這是一個簡單的示例,首先打印水平線,然后一段時間后,在前一行上添加一個字符串。

import time, curses

scr = curses.initscr()

scr.addstr(0, 0, "#" * 80)
scr.addstr(2, 0, "#" * 80)
scr.refresh()

time.sleep(1)

scr.addstr(1, 35, "Hello World")
scr.refresh()

盡管應該有多個庫來處理此任務,但是您應該查看cursescolorama 我不確定curses但是肯定可以通過colorama (通過pip安裝)。

這是一個例子:

from colorama import *

def pos(x, y):
    return '\x1b['+str(y)+';'+str(x)+'H'

def display():
    init() #just for safety here; needed in Windows
    print(Fore.RED+pos(30, 10)+ 'This string is a different place!')

display()

給定您的輸出,例如,在文件test.dat

===========================================================================================



===========================================================================================

vim一條簡單的代碼就可以產生想要的輸出:

:3s/^$/Hello World!

如果要在腳本中自動執行此操作: hello.sh

#!/bin/bash
ex test.dat <<-EOF
  :3s/^$/Hello World!
  wq " Update changes and quit.
EOF

輸出:

===========================================================================================

Hello World!

===========================================================================================

暫無
暫無

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

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