在Python中實現進度條效果可以使用sys
和time
模塊來實現。具體代碼如下:
import sys
import time
def progress_bar(iterable, total=None):
if total is None:
total = len(iterable)
bar_length = 50
start_time = time.time()
for i, item in enumerate(iterable, 1):
progress = i / total
elapsed_time = time.time() - start_time
eta = elapsed_time / progress - elapsed_time
bar = "#" * int(progress * bar_length)
sys.stdout.write(f"\r[{bar:50}] {i}/{total} - {progress*100:.1f}% - ETA: {eta:.2f}s")
sys.stdout.flush()
yield item
sys.stdout.write('\n')
# 示例
for _ in progress_bar(range(100)):
time.sleep(0.1)
以上代碼定義了一個progress_bar
函數,接受一個可迭代對象和總數作為參數,然后在循環中打印進度條和相關信息。使用sys.stdout.write
函數可以實現在同一行不斷更新輸出,從而實現進度條效果。