进度条实现原理
进度条和一般的print区别在哪里呢?
答案就是print会输出一个\n,也就是换行符,这样光标移动到了下一行行首,接着输出,之前已经通过stdout输出的东西依旧保留,而且保证我们在下面看到最新的输出结果。
进度条不然,我们必须再原地输出才能保证他是一个进度条,否则换行了怎么还叫进度条?
实现进度条最简单的办法就是,在输出完毕后,把光标移动到行首,继续在那里输出更长的进度条即可实现,新的更长的进度条把旧的短覆盖,就形成了动画效果。
在用Python处理耗时的任务时,往往希望能够了解到任务当前的处理进度,这个时候需要在任务中不断打印出任务的进度信息。一般我们是这样的:
def process_mission():
""" 任务处理方法 """
# 这里是任务处理过程
print('当前处理到第[%d]项' % count)
# 这里是任务处理过程
这种方式会在窗口输出一堆类似下面这样的信息:
当前处理到第1项
当前处理到第2项
当前处理到第3项
当前处理到第4项
当前处理到第5项
....
这种信息有可能非常非常的长,也有可能输出的时候非常非常的快,以至于根本就无法看清楚(输出非常快的时候)。
这时候,我们期待这样的功能:
[================== ] 25.60%
但如果纯粹的使用 print 是无法达到效果的,会变成和前面一样,满屏都是这种杠杠。
如何正确显示进度条呢?
Python提供了一个模块,叫: progressbar ,当使用这个模块之后,你要显示进度的仅需如下:
import progressbar # 先定义一个进度条 # http://blog.useasp.net/ pbar = progressbar.ProgressBar(maxval=100, \ widgets=[progressbar.Bar('=', '[', ']'), ' ', \ progressbar.Percentage()]) for i in xrange(100): # 更新进度条 pbar.update(i+1) pbar.finish()
# Ok,到此完结。
是不是很容易就完成进度条的显示?不过遗憾的是,这个python模块并不是默认的,而是需要安装:
pip install progressbar
如果没有安装 pip 可以 参考这里 。
对于只要一个简单进度条的人来说,安装个python包似乎有点动静太大,那么,自己动手写一个便是了。
下面是Mitchell自己写的一个类似的进度条,不用安装包,简单易用。
# 在使用本方法之前,请先做如下import # from __future__ import division # import math # import sys # ##blog.useasp.net## def progressbar(cur, total): percent = '{:.2%}'.format(cur / total) sys.stdout.write('\r') sys.stdout.write("[%-50s] %s" % ( '=' * int(math.floor(cur * 50 / total)), percent)) sys.stdout.flush()
说明:
cur , total :一个是当前值,一个是总值。 cur 在任务的处理过程中会不断向 total 靠近,直到两者相等,任务结束
需要注意的是,这两个可能为整型,因此要引入 division 。
在使用的时候,只需要调用 progressbar 即可在控制台输出进度条。
# 调用方式举例 progressbar(2, 100) progressbar(3.9, 10) progressbar(3283, 27379)
到此,我们完成了一个会在控制台动态更新的进度条。
以上所述是小编给大家介绍的Python在Console下显示文本进度条的方法,希望对大家有所帮助。
我已经做了一个水平进度条,它工作得很好。我想在它的中间显示一个文本视图或类似的东西,在条加载时显示倒计时。请记住,这不是进度对话框,进度条位于活动中并显示倒计时计时器。有人能帮我吗,最好的方法是什么,我怎么才能做到这一点?
本文向大家介绍在python tkinter中Canvas实现进度条显示的方法,包括了在python tkinter中Canvas实现进度条显示的方法的使用技巧和注意事项,需要的朋友参考一下 如下所示: 实现的甚是粗糙...... 以上这篇在python tkinter中Canvas实现进度条显示的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程。
本文向大家介绍Python HTTP下载文件并显示下载进度条功能的实现,包括了Python HTTP下载文件并显示下载进度条功能的实现的使用技巧和注意事项,需要的朋友参考一下 下面的Python脚本中利用request下载文件并写入到文件系统,利用progressbar模块显示下载进度条。 其中利用request模块下载文件可以直接下载,不需要使用open方法,例如: 下面的例子是题目中完整的例子
本文向大家介绍Python 给下载文件显示进度条和下载时间的实现,包括了Python 给下载文件显示进度条和下载时间的实现的使用技巧和注意事项,需要的朋友参考一下 大家在下载文件时能够显示下载进度和时间非常好,其实实现它方法很简单,这里我写了个进度条的模块,其中还附带上了运行时间也就是下载时间了。 该模块调用了三个库: 1.os 2.requests 3.time 话不多说,先上代码!!!. 实现
问题内容: 我正在尝试使用Ajax下载文件并显示自定义 下载进度栏。 问题是我不知道该怎么做。我编写了用于记录进度的代码,但不知道如何启动下载。 注意: 文件是不同类型的。 提前致谢。 JS HTML和PHP 问题答案: 如果要向用户显示下载过程的进度条,则必须在xmlhttprequest中进行下载。这里的问题之一是,如果您的文件很大-它们将被保存 在 浏览器 的内存 中,然后浏览器会将它们写入
问题内容: 我目前有一个班级,应该在下载文件时向我展示一个简单的表格。它正在工作,但是进度条没有更新,下载完成后我只能看到它。有人能帮我吗? 问题答案: 您的是经典的Swing并发问题。解决方案始终如一-在后台线程中运行长时间的代码,例如可以在SwingWorker中找到的代码。 例如,