python实现命令行中的进度条原理
常常在一些安装过程中会看到类似如下的进度条:
Progress: |██████████████------------------------------------| 28.1%
特点是:它在同一行显示,进度不断刷新。
这是如何实现的?探索了一下,运行一个python脚本实现起来还挺容易的,来看一个脚本:
print(f'abc')
很普通的打印一个字符串。
再来:
print(f'abc', end='\r')
运行发现没有任何内容,不对再仔细看看,是打印太快了覆盖了,加个sleep会明显一些:
import time
print(f'abc', end='\r')
time.sleep(1)
运行发现会先打印abc然后被提示符覆盖,原因是'\r'让光标移动到行首,并不会移动到下一行,所以sleep结束后就被命令行提示符覆盖了(更多了解)。
所以实现一个进度条的原理大概是这样的:
import time
print(f'abc', end='\r')
time.sleep(1)
print(f'efg', end="\r")
print()
每一次把上一次的刷新,最后再加一个print换行即可。
参考:
一个手写的进度条示例:https://stackoverflow.com/a/34325723
现成的库:https://github.com/tqdm/tqdm
本文来自博客园,作者:ssh_alitheia,转载请注明原文链接:https://www.cnblogs.com/shanchuan/p/15490287.html