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()
方法,输出结果如下: