0

我想使用 python(urllib 或 urllib2)从网站下载文件下载时我想显示下载的百分比。

#!usr/bin/env python
#-*- coding: latin1 -*-

import urllib

url = 'http://ww1.microchip.com/downloads/en/DeviceDoc/pk2cmdv1-20Linux2-6.tar.gz'
urllib.urlretrieve(url, "pickit.tar.gz")

我怎么能实现这个?

4

3 回答 3

1

以下代码应该可以工作:

def download(url, local_file):
    def progress(blocks_read, block_size, total_size):
        percent = min(int(blocks_read * block_size * 100 / total_size), 100)
        sys.stdout.write("\rdownloading {}: {:2}%".format(local_file, percent))
        if percent == 100:
            sys.stdout.write('\n')
        sys.stdout.flush()

    urllib.urlretrieve(url, local_file, reporthook=progress)


# call download function
download("http://ww1.microchip.com/downloads/en/DeviceDoc/pk2cmdv1-20Linux2-6.tar.gz",
         "pickit.tar.gz")
于 2013-02-05T14:39:39.757 回答
0

这个答案有一个很好的片段。

简而言之:

  1. 获取内容长度标头
  2. 读取一大块数据
  3. 计算百分比
  4. 重复 2 和 3 直到完成
于 2013-02-05T14:31:56.403 回答
0

改用“ urllib2.urlopen(..) ”并读取标题,它将包含您要查找的数据(内容长度)!

一个很好的例子:Python: Get HTTP headers from urllib2.urlopen call?

于 2013-02-05T14:30:00.477 回答