python实现从网站下载文件, 带进度信息

news/发布时间2024/6/17 21:37:01

我实现了一个函数, 代码如下:

def download_file_from_url(url, save_path='', callback:callable = None):'''下载文件, 并保存到save_path指定的位置url: 形如'http://www.tdx.com.cn/products/data/data/vipdoc/shlday.zip' 或者'http://www.tdx.com.cn/products/data/data/vipdoc/szlday.zip'save_path: 保存的目标路径, 形如: 'c:/abc'callback: 回调函数, 用于实时报告进度的, void f(context:dict)context形如: {}'''target_filename = url.split('/')[-1]    # 取出url的结尾作为文件名if save_path == '': save_path = get_main_path() # 如果没有指定保存路径, 则使用默认路径full_path = os.path.join(save_path, target_filename) # 拼接得到全路径with requests.get(url, stream=True) as fget:# 此时只有响应头被下载file_size = int(fget.headers["Content-Length"])context = {} # 回调函数上下文信息, 用于记录下载进度context['file_name'] = full_pathcontext['file_size'] = round(file_size/(1024**2),2) # 单位: Mb# 每次读取100k字节chunk_size = 100*1024file_done = 0with open(full_path, "wb") as fw:for chunk in fget.iter_content(chunk_size):fw.write(chunk)file_done += chunk_sizepercent = file_done / file_sizecontext['download_size'] = round(file_done/(1024**2),2) # 单位: Mbcontext['download_percent'] = round(percent,2) # 形如: 0.34, 表示百分比进度if callback is not None: callback(context) # 回调函数
  • 使用示例
    里面具体的网站可以替换为自己需要的:
import Common
# '\r'参数可以使打印信息保持在同一行
def _打印进度(context): print(context,end='\r')
url = 'http://xxx.xxx.xxx/shlday.zip'
Common.download_file_from_url(url,callback=_打印进度)

如下图所示:
image

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.jwkm.cn/p/47480555.html

如若内容造成侵权/违法违规/事实不符,请联系宁远站长网进行投诉反馈email:xxxxxxxx@qq.com,一经查实,立即删除!

相关文章

P2759 奇怪的函数

71923232_p6不学不知道,做过初升高暑假作业就会了。 \[\large x=10^{\log_{10}^x} \]\[\large x^x=\left(10^{\log_{10}^x}\right)^x=10^{x\log_{10}^x} \]因为是达到或超过,所以指数下取整加一即是位数。 然而 \(x\) 的范围比较大,直接枚举不行,要二分。

RocketMQ 入门实战(4)--Java 操作 RocketMQ

本文主要介绍使用 Java 来操作 RocketMQ,文中所使用到的软件版本:Java 1.8.0_341、RocketMQ 5.1.3、rocketmq-client-java 5.0.5。 1、引入依赖<dependency><groupId>org.apache.rocketmq</groupId><artifactId>rocketmq-client-java</artifactId…

新能源汽车adas数字化闭环系统的几点思考

数据闭环已经被大多数自动驾驶公司认为是提升自动驾驶能力的必经之路。主机厂,配置了自动驾驶硬件的车队采集通过规则及影子模式下的触发器筛选的数据,经过语义筛选后的数据被回传到云端。此后,工程师在云端用工具对数据做一些处理,再把处理好的数据放入数据集群,然后利用…

查找结果数量不确定

问题1:根据E、F的条件返回对应C列的结果 函数公式解决:=INDEX(FILTER(C$2:C$8,(A$2:A$8=E2)*(B$2:B$8=F2)),COUNTIFS(E$2:E2,E2,F$2:F2,F2))问题2:根据E、F的条件返回对应C列的结果,要求结果列纵向排列。 分析:满足条件1和条件2分别是甲和A的结果有多个,导致最终结果与E、…

米联客MLK-CM02-2CG-3EG-4EV-AMD MPSOC核心模块硬件手册

1 产品概述 MLK-CM02-2CG-3EG-4EV(MILIANKE-8X)是米联客电子Zynq UltraScale+ MPSOC系列开发平台的全新高端产品。其核心模块集成电源管理:0.85V核心电源,最大输出12A。用户基于核心模块设计功能底板(提供功能底板设计方案)。降低项目功能底板设计难度和生产成本,加速项…

Linux操作系统的安装

1.1操作系统的安装 1.1.1准备Linux操作系统安装文件 VMware-workstation下载链接:Download VMware Workstation Pro 镜像文件下载链接:http://mirrors.njupt.edu.cn/centos/7.9.2009/isos/x86_64/CentOS-7-x86_64-DVD-2009.iso 1.1.2配置虚拟机 1)打开VMware Workstation ,…