PythonHTTP如何实现下载并显示进度功能-创新互联
本篇内容主要讲解“Python HTTP如何实现下载并显示进度功能”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python HTTP如何实现下载并显示进度功能”吧!

下面的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许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
分享题目:PythonHTTP如何实现下载并显示进度功能-创新互联
URL地址:http://www.jxjierui.cn/article/dossgh.html


咨询
建站咨询
