print(obj) 其實等價於sys.stdout.write(obj+\n),而\r表示回到行首,所以需要輸出進度條時可以用以下代碼
rate = float(has_sent) / float(file_size)
rate_num = int(rate * 100)
sys.stdout.write("%s%% %s\r"%(rate_num, "*" * rate_num))
因為sys.stdout.write()沒有加\n,不會換行,而\r又會回到行首,后面的輸出覆蓋前面的輸出。