自制一个python下载文件的进度条模块!

简介: 我们在做Python爬虫脚本的时候,往往希望在运行的过程中可以实时查看到我的下载进度!之前我也一直想实现这个功能(绝对不是为了炫(装)耀(B)),也查看了很多博客但是各种解决方案都不是很满意(当然,progressBar和tqdm这两个库都是可选择也可操作的),很多时候我们需要一些定制功能的时候就需要考虑自己实现,这个功能其实很简单,我们可以自己去实现它! 实现办法 进度条最大的问题是实现输出在一行,且实时变化,不要换行。

我们在做Python爬虫脚本的时候,往往希望在运行的过程中可以实时查看到我的下载进度!之前我也一直想实现这个功能(绝对不是为了炫(装)耀(B)),也查看了很多博客但是各种解决方案都不是很满意(当然,progressBar和tqdm这两个库都是可选择也可操作的),很多时候我们需要一些定制功能的时候就需要考虑自己实现,这个功能其实很简单,我们可以自己去实现它!
这里写图片描述
实现办法
进度条最大的问题是实现输出在一行,且实时变化,不要换行。有的同学可能已经想到了,有2种办法:
一个是来自sys库的sys.stdout.write()函数
这里写图片描述
可以替代print的一个函数,具体的大家可以自行查找相关资料哦,我们今天用第二种办法:
print本身就有可以实现的办法,比如下面的代码,大家可以运行下!

import time
for i in range(10):
    print('\r'+'>'*i,end='')

这段代码会生成一个缓缓前行的‘>’,是不是很简单。重点是’ ‘和end参数, 是跳到行开头,end=”是将原本的print完成后换行改为不换行,这样就实现了这个小功能
那么,进度条完成了,怎么和我们的代码结合,比如我们下载1个10M的东东,怎么控制每1M显示10%呢,这就用到了我们爬虫最常用的一个库requests库的一个功能了
用requests库相关功能实现分段下载
一般情况下我们下载文件使用的是requests.get(url).content的方法来下载文件的二进制格式,然后在保存即可!这里我们添加一个参数steam=True,在对下载的文件大小进行指定,比如每次下载1024b,最后获取文件的总大小,即可完成我们的功能实现了!来看下面的代码:
这里写图片描述
这个函数就实现了通过文件的url+保存路径和名字2个参数,下载文件,并提供一个简单的进度条以及消耗时间的功能,我们下载个文件,试试效果:
这里写图片描述
ok~是不是很简单~~大家也可以在里面按自己的喜好添加各种元素哦!

如果有更好的办法,也喜欢在评论区发一下,大家一起讨论下!

相关文章
|
2月前
|
编译器 Python
如何利用Python批量重命名PDF文件
本文介绍了如何使用Python提取PDF内容并用于文件重命名。通过安装Python环境、PyCharm编译器及Jupyter Notebook,结合tabula库实现PDF数据读取与处理,并提供代码示例与参考文献。
|
2月前
|
编译器 Python
如何利用Python批量重命名文件
本文介绍了如何使用Python和PyCharm对文件进行批量重命名,包括文件名前后互换、按特定字符调整顺序等实用技巧,并提供了完整代码示例。同时推荐了第三方工具Bulk Rename Utility,便于无需编程实现高效重命名。适用于需要处理大量文件命名的场景,提升工作效率。
|
3月前
|
编解码 Prometheus Java
当Python同时操作1000个文件时,为什么你的CPU只用了10%?
本文介绍如何构建一个高效的文件处理系统,解决单线程效率低、多线程易崩溃的矛盾。通过异步队列与多线程池结合,实现任务调度优化,提升I/O密集型操作的性能。
65 4
|
3月前
|
人工智能 索引 Python
[oeasy]python094_使用python控制音符列表_midi_文件制作
本文介绍了如何使用Python控制音符列表制作MIDI文件。首先回顾了列表下标索引(正数和负数)的用法,接着通过`mido`库实现MIDI文件生成。以《两只老虎》为例,详细解析了代码逻辑:定义音高映射、构建旋律列表、创建MIDI文件框架,并将音符插入音轨。还探讨了音符时值与八度扩展的实现方法。最终生成的MIDI文件可通过不同平台播放或编辑。总结中提到,此技术可用于随机生成符合调性的旋律,同时引发对列表其他实际应用的思考。
89 5
|
2月前
|
数据采集 监控 算法
Python文件与目录比较全攻略:从基础操作到性能优化
文件比较的核心在于数据指纹校验,通过逐字节比对生成唯一标识,确保内容一致性。从标准库的os与filecmp到高性能第三方库如pydiffx,再到分布式与量子加密技术的未来趋势,文件比较广泛应用于数据备份、代码审查与系统监控等领域,是保障数据完整性的关键技术手段。
74 0
|
5月前
|
Python
使用Python实现multipart/form-data文件接收的http服务器
至此,使用Python实现一个可以接收 'multipart/form-data' 文件的HTTP服务器的步骤就讲解完毕了。希望通过我的讲解,你可以更好地理解其中的逻辑,另外,你也可以尝试在实际项目中运用这方面的知识。
248 69
|
3月前
|
数据采集 存储 API
Python爬虫结合API接口批量获取PDF文件
Python爬虫结合API接口批量获取PDF文件
|
3月前
|
数据采集 运维 BI
Python 文件操作进阶|使用 shutil 实现高效文件复制
在开发和运维中,处理大量文件是常见需求,如备份配置、归档日志或构建部署包。手动复制粘贴已无法满足高效需求!Python 的 `shutil` 模块提供了强大的文件操作功能,支持单文件复制、目录树迁移及自动化任务构建。本文详解 `shutil.copy()` 基础用法与进阶技巧,如批量复制、自动路径检测、时间戳命名备份等,助你实现高效自动化。结合实战案例(如自动备份系统),让你的代码更专业!学习后,欢迎交流心得,一起精进 Python 技能。关注我,获取更多编程技巧与源码分享!
|
5月前
|
Python
Python教程:os 与 sys 模块详细用法
os 模块用于与操作系统交互,主要涉及夹操作、路径操作和其他操作。例如,`os.rename()` 重命名文件,`os.mkdir()` 创建文件夹,`os.path.abspath()` 获取文件绝对路径等。sys 模块则用于与 Python 解释器交互,常用功能如 `sys.path` 查看模块搜索路径,`sys.platform` 检测操作系统等。这些模块提供了丰富的工具,便于开发中处理系统和文件相关任务。
210 14
|
5月前
|
Shell 开发者 Docker
Python文件打包:一站式指南
本文深入探讨Python文件打包的各种方法,从基础的zip和tar工具到高级的setuptools、PyInstaller、cx_Freeze等,涵盖Docker镜像、虚拟环境及自包含可执行文件的打包方式。通过示例代码与详细解析,帮助开发者根据项目需求选择合适的打包方案,提升代码分发与部署效率。内容全面,适合各水平读者学习参考。
391 7

推荐镜像

更多