import time
for i in range(100):
print('*',end='')
time.sleep(0.1)
爲什麼此代碼無法顯示進度?預期產出將顯示進展「****************」。進度條不工作?
import time
for i in range(100):
print('*',end='')
time.sleep(0.1)
爲什麼此代碼無法顯示進度?預期產出將顯示進展「****************」。進度條不工作?
Stdout被緩衝。您可以在每個print
之後致電sys.stdout.flush()
以刷新它。或者您可以將flush=True
添加到您的打印命令中,而不是執行明確的刷新:
print('*', end='', flush=True)
你能告訴我什麼是沖洗,爲什麼它被使用以及如何sys.stdout.flush?我的意思是你可以在內部代碼中使用什麼黑客? – user8751232
@ user8751232,stdout是默認情況下'print'輸出的地方。爲了提高性能,標準輸出通常被緩衝。通常,stdout是行緩衝的。也就是說,除非整行準備好打印,否則實際上沒有打印任何內容。刷新意味着將所有從緩衝區中累積的內容都推送出去,所以'sys.stdout.flush()'將所有內容都從緩衝區中移出並放到屏幕上。 'flush = True'做同樣的事情。您也可以消除整個應用程序的緩衝區,但在正常情況下您不希望這樣做。 –
它對您有什麼影響?這個對我有用。 https://repl.it/repls/TreasuredPerfumedIndianpangolin – user2896976
@ user2896976它等待一段時間,然後打印'*'100次,它不會像進度條那樣打印。 – user8751232
你如何運行腳本? – user2896976