本篇内容主要讲解“Python HTTP如何实现下载并显示进度功能”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python HTTP如何实现下载并显示进度功能”吧!
创新互联建站专注于企业营销型网站建设、网站重做改版、西岗网站定制设计、自适应品牌网站建设、H5响应式网站、商城网站建设、集团公司官网建设、外贸网站制作、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为西岗等各大城市提供网站开发制作服务。下面的Python脚本中利用request下载文件并写入到文件系统,利用progressbar
模块显示下载进度条。
其中利用request模块下载文件可以直接下载,不需要使用open方法,例如:
import urllib import requests.packages.urllib3 requests.packages.urllib3.disable_warnings() url = "https://raw.githubusercontent.com/racaljk/hosts/master/hosts" urllib.urlretrieve(url, filename="hosts")
下面的例子是题目中完整的例子,其中注释的部分是进度条的另一种写法,显示当前处理过的行数。
#!/usr/bin/python # encoding: utf-8 # -*- coding: utf8 -*- """ Created by PyCharm. File: LinuxBashShellScriptForOps:download_file2.py User: Guodong Create Date: 2016/9/14 Create Time: 9:40 """ import requests import progressbar import requests.packages.urllib3 requests.packages.urllib3.disable_warnings() url = "https://raw.githubusercontent.com/racaljk/hosts/master/hosts" response = requests.request("GET", url, stream=True, data=None, headers=None) save_path = "/tmp/hosts" total_length = int(response.headers.get("Content-Length")) with open(save_path, 'wb') as f: # widgets = ['Processed: ', progressbar.Counter(), ' lines (', progressbar.Timer(), ')'] # pbar = progressbar.ProgressBar(widgets=widgets) # for chunk in pbar((i for i in response.iter_content(chunk_size=1))): # if chunk: # f.write(chunk) # f.flush() widgets = ['Progress: ', progressbar.Percentage(), ' ', progressbar.Bar(marker='#', left='[', right=']'), ' ', progressbar.ETA(), ' ', progressbar.FileTransferSpeed()] pbar = progressbar.ProgressBar(widgets=widgets, maxval=total_length).start() for chunk in response.iter_content(chunk_size=1): if chunk: f.write(chunk) f.flush() pbar.update(len(chunk) + 1) pbar.finish()
运行结果:
到此,相信大家对“Python HTTP如何实现下载并显示进度功能”有了更深的了解,不妨来实际操作一番吧!这里是创新互联成都网站设计公司网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。