自制一个python下载文件的进度条模块!
我们在做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~是不是很简单~~大家也可以在里面按自己的喜好添加各种元素哦!
如果有更好的办法,也喜欢在评论区发一下,大家一起讨论下!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
-
上一篇
5.kotlin安卓实践课程-用kotlin写第一个activity(具体实现)
简介 主要会通过安卓实战来讲解kotlin语法和实际应用,本教程设及知识点包括框架模式mvp+mvvm, Databinding(数据绑定框架),Dagger2(依赖注入框架),DeepLink(页面路由框架),Rxjava,RxAndroid(异步操作框架),Retrofit,Okhtttp等,不过本教程重点在kotlin所以这些框架需要了解可自行百度。 针对人群:Android中级以上,kotlin入门 接上一篇 MainActivity完整代码,这个类主要完成了viewpager+fragment这种经典结构的绑定和底部导航栏点击事件处理 class MainActivity : BaseBindingActivity<ActivityMainBinding>(),RandomContract.View { //语法点1: MutableList lateinit var mFragments: MutableList<Fragment> @Inject lateinit var mPresenter : RandomPresenter override ...
-
下一篇
定位堆内存越界问题
定位堆内存越界问题 堆内存崩溃俗称采坑。也就是说在前面某些地方埋了坑,却不知道代码位置,但是等崩溃出现了,却看到的是踩坑的代码。 这时候我们需要找到埋坑的地方。然后修复埋坑的代码。 #include <iostream> class A{ public: char t[16]; }; int main(int argc, const char * argv[]) { A * pA = new A; memset(pA->t, 0, 17); delete pA; return 0; } Windows: 如果是Debug版,dbgheap.c 在堆内存前后会加 8个0xfd 保护值。 如果内存越界了,就会将0xfd保护值破坏。每次读写内存时候,dbgheap.c 会检查0xfd保护值。当保护值被篡改就会断到。如上代码,比如我们删除这个指针的时候: 这时候,针对这块保护值,借用条件断点。就能知道越界的代码位置了。 如果是Release版,我们可以借用gflags。 打开gflags /p /enable,可以在内存越界时候触发断点。外面帖子很多,不再截图了。 Xcode...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2整合Redis,开启缓存,提高访问速度
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- Dcoker安装(在线仓库),最新的服务器搭配容器使用
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS7,8上快速安装Gitea,搭建Git服务器