![](/img/trans.png)
[英]How do I delete&replace multiple printed lines using python with cmd? [on hold]
[英]How to refresh multiple printed lines inplace using Python?
我想了解如何在Python 3.5中重新打印多行。
這是一個腳本示例,我想在此刷新打印的語句。
import random
import time
a = 0
while True:
statement = """
Line {}
Line {}
Line {}
Value = {}
""".format(random.random(), random.random(), random.random(), a)
print(statement, end='\r')
time.sleep(1)
a += 1
我想做的是:
Line 1
Line 2
Line 3
Value = 1
寫在/更新/刷新之上:
Line 1
Line 2
Line 3
Value = 0
每行的值將每次更改。 這實際上為我提供了每條生產線的狀態更新。
我看到了5年前的另一個問題,但是在Python 3+打印函數中添加了end
參數,我希望有一個更簡單的解決方案。
如果我已正確理解,您正在尋找這種類型的解決方案:
import random
import time
import os
def clear_screen():
os.system('cls' if os.name == 'nt' else 'clear')
a = 0
while True:
clear_screen()
statement = """
Line {}
Line {}
Line {}
Value = {}
""".format(random.random(), random.random(), random.random(), a)
print(statement, end='\r')
time.sleep(1)
a += 1
該解決方案不適用於IDLE,Sublime Text,Eclipse等某些軟件。在此類軟件中運行該問題的原因是clear / cls使用ANSI轉義序列來清除屏幕。 這些命令將諸如“ \\ 033 [[80; j”]之類的字符串寫入輸出緩沖區。 本機命令提示符能夠將其解釋為清除屏幕的命令,但是這些偽終端不知道如何解釋它,因此它們最終只會打印小方塊,就像打印未知字符一樣。
如果您使用的是這種類型的軟件,則可能會進行打印('\\ n'* 100),這不是最佳解決方案,但總比沒有好。
如果你想清除每次調用時,屏幕print()
所以它出現在每次打印被覆蓋,你可以使用clear
的UNIX或cls
的窗口,例如:
import subprocess
a = 0
while True:
print(a)
a += 1
subprocess.call("clear")
您可以為此使用詛咒 。
#!/usr/bin/python3
import curses
from time import sleep
from random import random
statement = """
Line {}
Line {}
Line {}
Value = {}"""
screen = curses.initscr()
n = 0
while n < 20:
screen.clear()
screen.addstr(0, 0, statement.format(random(), random(), random(), n))
screen.refresh()
n += 1
sleep(0.5)
curses.endwin()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.