用Python编写进度条程序的方法
发布时间:2023-12-23 07:40:20
编写进度条程序可以通过使用Python的time模块来实现。以下是一个简单的进度条程序以及使用示例。
import time
def progress_bar(total, current, length=50):
filled_len = int(length * current / total)
bar = '#' * filled_len + '-' * (length - filled_len)
percent = current / total * 100
status = f"{current}/{total} [{bar}] {percent:.1f}%"
print(status, end='\r' if current < total else '
')
# 使用示例
total = 1000
# 逐步更新进度条示例
for i in range(total):
time.sleep(0.01) # 模拟一些耗时操作
progress_bar(total, i+1)
# 直接更新进度条示例
for i in range(total):
time.sleep(0.01) # 模拟一些耗时操作
progress_bar(total, i+1)
# 结束后清除进度条示例
for i in range(total):
time.sleep(0.01) # 模拟一些耗时操作
progress_bar(total, i+1)
print("任务完成!")
在上述示例代码中,progress_bar()函数用于创建和更新进度条。它接受三个参数:total表示总任务量,current表示当前完成的任务量,length表示进度条的长度,默认为50。函数首先计算当前进度所占据的进度条长度filled_len,然后使用#和-字符构建进度条字符串bar。接下来,函数计算当前完成任务的百分比percent,并将所有信息组合成进度条状态字符串status。最后,函数使用print()函数打印进度条的状态,使用\r将光标定位在当前行的开头(以便覆盖之前的输出)或使用
换行。
在示例中的使用部分,我们首先在一个循环中调用progress_bar()函数来逐步更新进度条。每次循环都模拟一些耗时操作,通过调用time.sleep()函数来暂停0.01秒。在每次迭代结束时,通过传递当前完成任务的数量来更新进度条。
第二个示例展示了如何直接更新进度条,而不是逐步更新。也就是说,我们在每次循环迭代结束时,直接通过调用progress_bar()函数来更新进度条。这种方法对于已经知道总任务量的情况下非常方便。
最后一个示例展示了如何在任务完成后清除进度条。在此示例中,我们首先更新进度条,然后打印一条消息指示任务完成。
注意:由于使用了\r(光标回到行首)来更新进度条,因此在某些环境中可能无法清除进度条的显示。对于这种情况,可以使用其他方法,例如使用ANSI转义序列(\x1b[2K\x1b[1G)或第三方库(如tqdm)来生成更复杂的进度条样式和控制。
