python中如何使用requests模块下载文件并获取进度提示?
2017-03-26 22:56
881 查看
Reference: https://www.zhihu.com/question/41132103
#!/usr/bin/env python3 import requests from contextlib import closing """ 作者:微微寒 链接:https://www.zhihu.com/question/41132103/answer/93438156 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 """ class ProgressBar(object): def __init__(self, title, count=0.0, run_status=None, fin_status=None, total=100.0, unit='', sep='/', chunk_size=1.0): super(ProgressBar, self).__init__() self.info = "[%s] %s %.2f %s %s %.2f %s" self.title = title self.total = total self.count = count self.chunk_size = chunk_size self.status = run_status or "" self.fin_status = fin_status or " " * len(self.statue) self.unit = unit self.seq = sep def __get_info(self): # 【名称】状态 进度 单位 分割线 总数 单位 _info = self.info % (self.title, self.status, self.count/self.chunk_size, self.unit, self.seq, self.total/self.chunk_size, self.unit) return _info def refresh(self, count=1, status=None): self.count += count # if status is not None: self.status = status or self.status end_str = "\r" if self.count >= self.total: end_str = '\n' self.status = status or self.fin_status print(self.__get_info(), end=end_str) def main(): with closing(requests.get("http://www.futurecrew.com/skaven/song_files/mp3/razorback.mp3", stream=True)) as response: chunk_size = 1024 content_size = int(response.headers['content-length']) progress = ProgressBar("razorback", total=content_size, unit="KB", chunk_size=chunk_size, run_status="正在下载", fin_status="下载完成") # chunk_size = chunk_size < content_size and chunk_size or content_size with open('./file.mp3', "wb") as file: for data in response.iter_content(chunk_size=chunk_size): file.write(data) progress.refresh(count=len(data)) if __name__ == '__main__': main()
相关文章推荐
- Android中使用AsyncTask实现文件下载以及进度更新提示
- Python3使用requests模块显示下载进度
- Android中使用AsyncTask实现文件下载以及进度更新提示
- 使用libcurl实现获取目标文件大小, 下载进度显示, 断点续传等功能
- Python3使用requests模块显示下载进度
- 解决Python爬虫在爬资源过程中使用urlretrieve函数下载文件不完全且避免下载时长过长陷入死循环,并在下载文件的过程中显示下载进度
- Android中使用AsyncTask实现文件下载以及进度更新提示
- python 使用 urllib.urlretrieve()下载网络图片,在本地打开提示文件损坏无法打开
- (二)使用libcurl实现获取目标文件大小, 下载进度显示, 断点续传等功能
- Android中使用AsyncTask实现文件下载以及进度更新提示
- 【用Python写爬虫】获取html的方法【四】:使用urllib下载文件
- Python3使用requests模块显示下载进度
- 如何使用Python获取某个路径下面所有文件的绝对路径以及其他操作
- 如何使用Python 下载FTP的文件
- 如何获取getevent的输出,并且记录到文件中?使用python操作
- 如何利用代码从网站上获取一个文件的大小,并且下载时不出现保存提示框
- [Python系列实用教程]一、Python如何使用urllib2获取网络资源
- 如何使用PHP获取网络上的文件
- Python 获取下载文件的大小
- 用python如何将Web服务器上的指定文件下载下来