【python】sys.stdout.write實現輸出數據動態刷新(一行或多行)

1、一般的打印(靜態的)

一般的打印都是靜態的,打印的是什麼後面不會有改動
比如

import sys
import time

for i in range(5):
    time.sleep(1)
    print("\r now is :{0}\n".format(i))

輸出結果:
在這裏插入圖片描述

2.動態刷新一行

寫法多樣:

sys.stdout.write('\r now is: %d' % (i)) 
sys.stdout.flush() 
sys.stdout.write("\r now is :{0}".format(i))
sys.stdout.flush()

舉例:test.py

import sys
import time

for i in range(5):
    time.sleep(2)
    sys.stdout.write("\r now is :{0}".format(i))
    sys.stdout.flush() 

打印效果如下圖:
在這裏插入圖片描述

3.動態刷新多行

這裏使用了清屏os.system(‘clear’)的操作,多行的數據只使用\r好像不能同時刷新多行。


import sys
import time
import os
import re

for i in range(5):
    os.system('clear')
    a='''
id    name   sex
1     lucy   girl
'''
    a=re.sub("1",str(i),a)
    sys.stdout.write("\r{0}".format(a))
    sys.stdout.flush() 
    time.sleep(2)

打印效果:
在這裏插入圖片描述

4.思考:

如果步驟2不加清屏的操作,打印結果會是下面的這個樣子,除了上面步驟2的解決方法,如果有其他方式可以實現動態刷新數據的,歡迎留言!
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章