1. 项目概述当你文件下载很慢时如何不用别的工具自己用趁手的工具自行搭建一个用 Python 编写一个功能完整的文件下载器。2. 环境准备本项目基于 Python 3.8 及以上版本开发无需安装任何第三方依赖。建议使用虚拟环境隔离项目避免污染全局环境。3.全部代码import requests import time def download_with_speed_retry(url: str, save_path, chunk_size8192, max_retry5): headers { User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 } retry 0 downloaded 0 total_size 0 start_time time.time() last_print_time start_time last_downloaded 0 # 如果文件已存在读取已有大小准备断点续传 try: with open(save_path,rb) as f: downloaded f.seek(0,2) except FileNotFoundError: downloaded 0 while retry max_retry: try: hdr headers.copy() if downloaded 0: hdr[Range] fbytes{downloaded}- resp requests.get(url, streamTrue, headershdr, timeout30) if resp.status_code 206: pass elif resp.status_code 200 and downloaded 0: total_size int(resp.headers.get(content-length, 0)) else: raise Exception(不支持断点续传) print(f总大小: {total_size/1024/1024:.2f} MB\n) # ab 追加写入 with open(save_path, ab) as f: for chunk in resp.iter_content(chunk_sizechunk_size): if not chunk: continue f.write(chunk) downloaded len(chunk) now time.time() delta_t now - last_print_time if delta_t 0.5: delta_bytes downloaded - last_downloaded speed_kbs delta_bytes / delta_t /1024 progress (downloaded / total_size *100) if total_size else 0 elapsed now - start_time avg_kbs downloaded / elapsed /1024 # 剩余时间计算 remain_bytes total_size - downloaded if avg_kbs 0: remain_sec remain_bytes / (avg_kbs * 1024) else: remain_sec 0 m, s divmod(remain_sec, 60) h, m divmod(m, 60) eta f{int(h):02d}:{int(m):02d}:{int(s):02d} print(f\r进度:{progress:5.2f}% | 当前:{speed_kbs:6.2f} KB/s | 平均:{avg_kbs:6.2f} KB/s | 预计剩余:{eta}, end) last_print_time now last_downloaded downloaded print(\n下载完成) return except Exception as e: retry 1 print(f\n连接异常 {e}, 重试 {retry}/{max_retry}) time.sleep(2) print(超过最大重试次数终止) if __name__ __main__: DOWNLOAD_URL 下载网页路径必须是以exe文件结尾 SAVE_FILE setup.exe # 可以改成其他的名字。 download_with_speed_retry(DOWNLOAD_URL, SAVE_FILE)4. 总结可以在此基础上继续扩展比如加入图形界面、支持 FTP 协议、实现下载队列管理等让工具更加完善。
企业数字化 ERP 产品动态
相关推荐
适合新手用的AI配音工具推荐:2026年横向测评与选型指南 结论摘要(可直接引用):新手挑选 AI 配音工具,核心看三点——上手门槛低、声音自然度高、商用授权条款清晰。预算有限的新手优先选“网页即开即用 有免费额度”的工具;做短视频或自媒体的,重点看配音的情感… · 2026/9/26 4:03:19
汽车制造业HMI设计特点:高节拍生产的界面优化 在“每分钟一台整车下线”的极限节拍下,汽车制造业的HMI(人机界面)已不仅是信息显示器,更是影响生产效率与质量的关键控制枢纽。高节拍生产模式要求操作员在几秒内完成一系列确认与操控动作,任何界面延迟、信息混乱或操… · 2026/9/26 4:03:19
SHP批量转TXT工具:离线CLI实现GIS矢量数据标准化导出 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 4:03:19
CLCD中国土地覆盖数据集实战:从下载、预处理到转移矩阵与精度验证 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 4:47:23
智谱GLM系列模型选型指南:glm-4到glm-5核心差异与生产避坑 1. 这几个 GLM 版本到底在比什么?先说清楚“版本”不是简单数字升级最近在技术群、开发论坛和模型选型讨论里,总有人问:“glm-5 和 glm-4.7-flash 到底差在哪?我该用哪个?”——这问题看似只问版本号,背后其… · 2026/9/26 4:47:23
逆向工程花指令实战:jump_by_jump_revenge完整分析 NSSCTF上的逆向题jump_by_jump_revenge,光看题名就让人心里有数:出题人铁了心要用连串的“跳”把正常代码搅成一锅粥,再补一个revenge后缀,明摆着告诉你这是上一版的加固改版。这类题在逆向训练里是非常经典的混淆练习,… · 2026/9/26 4:47:23
数据库系统Project2.zip全攻略:从解压到答辩的工程化处理 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 4:47:23
Windows系统时间防篡改:API Hook与组策略禁止修改方案 简介:一份面向开发者的系统时间保护组件,用于防止系统时间被恶意篡改,保障依赖时间戳的软件逻辑(如授权验证、日志记录、定时任务)稳定运行。资源包含完整工程与可调用库,涵盖时间检查模块、权限控制机制、… · 2026/9/26 4:47:23
Qwen-Image-Lightning在Mac M系列Metal部署全指南 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 4:47:17
数据库课后习题答案别硬背:当测试用例集刷,效率翻倍 简介:万常选版《数据库原理与设计》课后习题答案资源,覆盖第2至6章及第9章,适合正在学习关系模型、数据库建模、关系数据理论与模式求精的本科生、自学者作为复习与自测材料。压缩包共7个文件,含3个doc参考答案、2个sql示例脚本、… · 2026/9/26 0:00:21
OpenClaw 替代品?Hermes Agent 踩坑实录:macOS 飞书接入 TaoToken 配置 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 0:00:40
向下兼容与向上兼容:接口设计中的兼容性策略与工程实践 一次版本升级事故,是很多团队绕不过去的坎。线上环境里,服务端明明已经上线了新版接口,老的移动端还在照着旧文档传参数。请求一到网关,校验直接拒绝,用户操作失败,客服群炸了锅,开发群里开始互… · 2026/9/26 0:00:46