整理利用python實現控制台進度條功能
進度條必須所有字符全部在同一行,且動態顯示。
由於print語句打印末尾會\n換行,而且一旦被print之后,也無法進行修改。因此我們無法使用print完成這個功能。
我們會使用sys庫的sys.stdout.write()函數,這個函數會在控制台輸出這個字符串的同時,不加結尾。通過sys.stdout.flush()函數把輸出暫時打印在控制台中。使用“\r”轉義字符(回到行首)。
1 for i in range(101): 2 s1 = "\r[%s%s]%d%%"%("*"*i," "*(100-i),i) 3 sys.stdout.write(s1) 4 sys.stdout.flush() 5 time.sleep(0.3)
1 [************************************************ ]63%
注意:睡眠的時間最好設置為0.3及其以上,不然刷新太快,會出現不當的顯示。
也可以把數字顯示放在最開頭:
1 for i in range(101): 2 s1 = "\r%d%%[%s%s]"%(i,"*"*i," "*(100-i)) 3 sys.stdout.write(s1) 4 sys.stdout.flush() 5 time.sleep(0.3)
1 18%[****************** ]
