在Python中输出进度条可以通过多种方法实现,以下是几种常见的方法:
方法一:使用`print`函数和`sys.stdout.write`
import sys
import time
def progress_bar(num, sum_total):
rate = float(num) / float(sum_total)
rate_num = int(rate * 100)
sys.stdout.write('\r%d%% : ' % rate_num)
for i in range(0, num):
sys.stdout.write('█')
sys.stdout.flush()
if __name__ == '__main__':
for i in range(0, 100):
time.sleep(0.1)
progress_bar(i + 1, 100)
方法二:使用`time.sleep`模拟任务处理时间
import time
def simple_progress_bar(scale=10):
print('------执行开始------')
for i in range(scale + 1):
a = '*' * i
b = ' . . ' * (scale - i)
c = (i / scale) * 100
dur = time.perf_counter() - start
print('\r{:^3.0f}%[{}]{}s'.format(c, a, b, dur), end='')
sys.stdout.flush()
time.sleep(0.05)
if __name__ == '__main__':
start = time.perf_counter()
simple_progress_bar()
方法三:使用第三方库`tqdm`
from tqdm import tqdm
import time
mylist = [1, 2, 3, 4, 5, 6, 7, 8]
for i in tqdm(mylist):
time.sleep(1)
方法四:自定义进度条类
class ProgressBar:
def __init__(self, width=50):
self.pointer = 0
self.width = width
def __call__(self, x):
self.pointer = int(self.width * (x / 100.0))
return self.pointer + ' ' * (self.width - self.pointer) + '% done'
if __name__ == '__main__':
pb = ProgressBar()
for i in range(101):
print(pb(i), end='\r')
time.sleep(0.1)
以上方法都可以用来在Python中输出进度条。你可以根据自己的需求选择合适的方法。如果需要更复杂的进度条效果,可以使用第三方库,如`Progress`或`tqdm`,它们提供了更多的功能和定制选项