簡體   English   中英

如何動態更新python3中多行的終端輸出?

[英]How to dynamically update terminal output on multiple lines in python3?

我正在嘗試編寫一個程序,通過將數據動態打印到終端來模擬 20x4 字符 LCD 屏幕。 目前我只是想讓輸出到終端工作,但我無法弄清楚如何在不使用換行符的情況下同時打印多行。

import time

i = 0
for i in range(0, 9):
    print(str(i) + str(i) + str(i) + str(i) + str(i) +
          str(i) + str(i) + str(i) + str(i) + str(i) +
          str(i) + str(i) + str(i) + str(i) + str(i) +
          str(i) + str(i) + str(i) + str(i) + str(i), end='\r')
    print(str(i) + str(i) + str(i) + str(i) + str(i) +
          str(i) + str(i) + str(i) + str(i) + str(i) +
          str(i) + str(i) + str(i) + str(i) + str(i) +
          str(i) + str(i) + str(i) + str(i) + str(i), end='\r')
    print(str(i) + str(i) + str(i) + str(i) + str(i) +
          str(i) + str(i) + str(i) + str(i) + str(i) +
          str(i) + str(i) + str(i) + str(i) + str(i) +
          str(i) + str(i) + str(i) + str(i) + str(i), end='\r')

    time.sleep(1)

目前,此代碼打印一行 20 個字符,這些字符可以正確更新,但我需要在它下面添加兩行。 我想要的預期輸出是 4 行,每行 20 個字符,每行動態更新。 最終,每一行將只是 20 個字符的一個字符串。

您應該能夠使用f 字符串格式docstring來實現這一點。

請參閱此處的F 字符串(格式化字符串文字)的官方文檔

代碼應該是這樣的。

import time

i = 0
for i in range(0, 9):
    print(f"""
          {str(i)} {str(i)} {str(i)} {str(i)} {str(i)} 
          {str(i)} {str(i)} {str(i)} {str(i)} {str(i)}
          {str(i)} {str(i)} {str(i)} {str(i)} {str(i)} 
          {str(i)} {str(i)} {str(i)} {str(i)} {str(i)} """)

    time.sleep(1)

如果這不是您要找的東西,請告訴我如果這有幫助,請告訴我,以便我可以幫助您找到更適合您需求的東西。

稍微調整 Rodrez 的回答:

import time

i = 0

goback = "\033[F" * 5  # 👈 this "climbs you back up 5 lines" at the next
                       # iteration, output at same spot, like `top`


for i in range(0, 9):
    print(f"""{goback}
          {i} {i} {i} {i} {i} 
          {i} {i} {i} {i} {i}
          {i} {i} {i} {i} {i} 
          {i} {i} {i} {i} {i} """)

    time.sleep(1)


請參閱https://stackoverflow.com/a/11474509了解我從哪里獲得奇怪的字符。

暫無
暫無

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

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