我正在列印 2 行,它們都使用 \r 和 % 來替換它們自己的列印行中的 %d 或 %s 。問題是它們會相互交叉。
def pinging():
average_list = []
max_list = []
host_list = host_string(ptype)
numberitems = len(host_list)
counter = 0
for i in range(0,len(host_list)):
counter = 1
print('Pinged:%d' % i,"of",numberitems, end='\r')
try:
ping = subprocess.check_output(['ping','-c',num_pings,host_list[i]],timeout=sec_timeout)
except subprocess.TimeoutExpired:
print('Timeout:%s' % host_list[i], end="\r")
continue
ping = str(ping)
ravg,rmax = string_configure(ping,host_list[i],num_pings)
average_list.append(ravg)
max_list.append(rmax)
return(average_list,max_list)
我期待 2 個單獨的更新列印行:
1 of 25#and so 一個
Timeout: 12.34.56.78#and 以此類推
相反,我得到:
0 of 25
1 of 25.25.109# 它繼續像這樣用來自“host_list”的更改的IP地址替換“numberitems”
那么我如何阻止這兩條列印線互動呢?
uj5u.com熱心網友回復:
您的問題是,\r僅將游標移回行首但不會擦除它,因此下一次列印只會寫在已經寫入的內容之上,但不會擦除下一個字符,因此您將混合兩行.
"\033[F"是一個特殊的序列,用于將游標移動到控制臺上方的行。
所以在這兩個之后print你可以添加
print("\033[F\033[F", end="")
這會將游標向上移動兩行,這意味著這兩行將一起顯示而不會與另一行交叉。
如果你想讓它作業,你也應該洗掉end="\r"你的。print
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/455739.html
