当前位置:  开发笔记 > 编程语言 > 正文

如何在Python中编写下载进度指示器?

如何解决《如何在Python中编写下载进度指示器?》经验,为你挑选了3个好方法。

我写一个小程序下载文件通过HTTP(如,例如,描述在这里).

我还想包含一个小的下载进度指示器,显示下载进度的百分比.

这是我想出的:

    sys.stdout.write(rem_file + "...")    
    urllib.urlretrieve(rem_file, loc_file, reporthook=dlProgress)

    def dlProgress(count, blockSize, totalSize):
      percent = int(count*blockSize*100/totalSize)
      sys.stdout.write("%2d%%" % percent)
      sys.stdout.write("\b\b\b")
      sys.stdout.flush()

输出:MyFileName ... 9%

还有其他想法或建议吗?

有点烦人的是在百分比的第一位数字中终端闪烁的光标.有办法防止这种情况吗?有没有办法隐藏光标?

编辑:

这里有一个更好的替代方法,在dlProgress和'\ r'代码中使用全局变量作为文件名:

    global rem_file # global variable to be used in dlProgress

    urllib.urlretrieve(rem_file, loc_file, reporthook=dlProgress)

    def dlProgress(count, blockSize, totalSize):
      percent = int(count*blockSize*100/totalSize)
      sys.stdout.write("\r" + rem_file + "...%d%%" % percent)
      sys.stdout.flush()

输出:MyFileName ... 9%

并且光标显示在行的END处.好多了.



1> Readonly..:

在http://pypi.python.org/pypi/progressbar/2.2上有一个用于python的文本进度条库 ,您可能会发现它很有用:

该库提供文本模式进度条.这通常用于显示长时间运行的进度,提供处理正在进行的视觉线索.

ProgressBar类管理进度,行的格式由许多小部件给出.窗口小部件是可以根据进度状态不同地显示的对象.小部件有三种类型: - 一个字符串,总是显示自己; - ProgressBarWidget,每次调用update方法时都可能返回不同的值; 和 - 一个ProgressBarWidgetHFill,它类似于ProgressBarWidget,但它会扩展以填充该行的剩余宽度.

进度条模块非常易于使用,但功能非常强大.并自动支持自动调整大小等功能.



2> Commodore Ja..:

您也可以尝试:

sys.stdout.write("\r%2d%%" % percent)
sys.stdout.flush()

在字符串的开头使用单个回车而不是几个退格.你的光标仍会闪烁,但它会在百分号后闪烁,而不是在第一个数字下面闪烁,并且使用一个控制字符而不是三个控制字符可能会减少闪烁.



3> tstone2077..:

对于它的价值,这是我用来使其工作的代码:

from urllib import urlretrieve
from progressbar import ProgressBar, Percentage, Bar

url = "http://......."
fileName = "file"
pbar = ProgressBar(widgets=[Percentage(), Bar()])
urlretrieve(url, fileName, reporthook=dlProgress)

def dlProgress(count, blockSize, totalSize):
    pbar.update( int(count * blockSize * 100 / totalSize) )

推荐阅读
mobiledu2402851373
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有