urlib.request.urlretrieve() 使用

作用:文件从网络位置复制到本地位置,并且可以显示下载进度。
参数:

import six.moves import urllib
urllib.request.urlretrieve(url, filename=None, reporthook=None, data=None)

参数说明:
url: 网络对象地址,若url指向本地文件,对象不会被复制,除非提供文件名。
filename:保存到本地的路径,(若未指定,会生成一个临时文件保存数据)
reporthook:回调函数,连接上服务器以及相应的数据块传输完毕会触发该函数,显示当前下载进度。
data:post到服务器的数据。
返回值:元祖(filename, headers),filename保存到本地的路径,header:服务器的响应头。

例子:

import os
from six.moves import urllib
import sys

DATA_URL = 'http://www.python.org/ftp/python/2.7.5/Python-2.7.5.tar.bz2'
filename = DATA_URL.split('/')[-1]

def _progress(block_num, block_size, total_size):
    '''回调函数
       @block_num: 已经下载的数据块
       @block_size: 数据块的大小
       @total_size: 远程文件的大小
    '''
    sys.stdout.write('\r>> Downloading %s %.1f%%' % (filename,
                     float(block_num * block_size) / float(total_size) * 100.0))
    sys.stdout.flush()

filepath, _ = urllib.request.urlretrieve(DATA_URL, filename, _progress)
print()

sys.stdout.write和print差不多是输出的意思,sys.stdout.flush()函数的作用是刷新输出

你可能感兴趣的:(urlib.request.urlretrieve() 使用)