urllib.request.urlretrieve()实现文件下载进度查看

函数参数说明

urllib.request.urlretrieve(url, filename=None, reporthook=None, data=None)
url: 文件下载链接
filename: 文件下载路径(如果参数未指定,urllib 会生成一个临时文件保存数据)
reporthook: 回调函数,当连接上服务器、以及相应的数据块传输完毕时会触发该回调,我们可以利用这个回调函数来显示当前的下载进度
data: 指 post 到服务器的数据。该方法返回一个包含两个元素的元组 (filename, headers),filename 表示保存到本地的路径,header 表示服务器的响应头

示例

import urllib.request

def download():
    #下载链接
    down_url=r"https://av.sc.com/hk/zh/content/docs/hk-c-nddr-ff304m-ag-20190809.pdf"
    #储存路径
    down_path=r"C:\Users\Administrator\Desktop\test\aa.pdf"
    #链接转义,防止链接中有中文或空格而报错
    down_url = urllib.parse.quote(down_url, safe=":/=?#")
    print(down_url)
    opener = urllib.request.build_opener()
    opener.addheaders=[('user-agent','Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36')]
    urllib.request.install_opener(opener)
    #执行下载
    urllib.request.urlretrieve(down_url,filename=down_path,reporthook=loading)


def loading(blocknum,blocksize,totalsize):
    """
    回调函数: 数据传输时自动调用
    blocknum:已经传输的数据块数目
    blocksize:每个数据块字节
    totalsize:总字节
    """
   percent=100*blocknum*blocksize/totalsize
   if percent>100:
       percent=100
   print("正在下载>>>%0.2f%%"%percent)
    

使用全局函数组件运行download()方法,输出结果如下:
urllib.request.urlretrieve()实现文件下载进度查看