在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
函数可以实现在同一行不断更新输出,从而实现进度条效果。