python print进度条效果

最简洁的代码:

for i in range(1000):
    print("\r"+str(i), end="", flush=True)
    # print("\r",str(i),end="\r",flush=True)
    time.sleep(0.1)

这个不行:

for i in range(100):
    print("\r"+str(i),end="\r")

这个也不行:

  1. import time

  2. for i in range(100000):

  3. percent = 1.0 * i / 100000 * 100

  4. print('complete percent:%10.8s%s'%(str(percent),'%'),end='\r')

  5. time.sleep(0.1)

#!/usr/bin/python3.6
# __*__uft8__*__
import sys
import time


def progress(percent, width=50):
    '''进度打印功能'''
    if percent >= 100:
        percent = 100

    show_str = ('[%%-%ds]' % width) % (int(width * percent / 100) * "#")  # 字符串拼接的嵌套使用
    print('\r%s %d%%' % (show_str, percent), end='')


# =========应用==========
data_size = 3030333  # 定义传输的数据,实际应用中这个值改一下就可以了
recv_size = 0
while recv_size < data_size:
    time.sleep(0.01)  # 模拟数据的传输延迟
    recv_size += 1024  # 每次收1024

    recv_per = int(100 * recv_size / data_size)  # 接收的比例
    progress(recv_per, width=30)  # 调用进度条函数,进度条的宽度默认设置为30

另一种方法:

扫描二维码关注公众号,回复: 2791535 查看本文章
import time
import sys

for i in range(101):
    sys.stdout.write('\r')
    sys.stdout.write("%s%% [%s %s]" % (int(i % 50), int(i % 50) * '#',(51-int(i % 50))*" "))
    sys.stdout.flush()
    time.sleep(0.5)

sys.stdout.write('\n')

猜你喜欢

转载自blog.csdn.net/jacke121/article/details/81567677