• 基础版
import requests
url = "http://mp.111ttt.cn/mp3free/81135985.mp3" rsp = requests.get(url, stream=True)
with open('1.mp3', 'wb') as f:
for i in rsp.iter_content(chunk_size=1024): # 边下载边存硬盘, chunk_size 可以自由调整为可以更好地适合您的用例的数字
f.write(i)
  • 晋级版
# 下载MP3文件到本地
import os
import requests def DownloadFile(mp3_url, save_url,file_name):
try:
if mp3_url is None or save_url is None or file_name is None:
print('参数错误')
return None
# 文件夹不存在,则创建文件夹
folder = os.path.exists(save_url)
if not folder:
os.makedirs(save_url)
# 读取MP3资源
res = requests.get(mp3_url,stream=True)
# 获取文件地址
file_path = os.path.join(save_url, file_name)
print('开始写入文件:', file_path)
# 打开本地文件夹路径file_path,以二进制流方式写入,保存到本地
with open(file_path, 'wb') as fd:
for chunk in res.iter_content(chunk_size=1024):
fd.write(chunk)
print(file_name+' 成功下载!')
except:
print("程序错误")
if __name__ == "__main__":
# MP3源地址url
url = 'http://mp.111ttt.cn/mp3free/81135985.mp3'
# MP3保存文件夹
save_url='./music/'
# MP3文件名
file_name = 'mymusic'+'.mp3'
DownloadFile(url,save_url, file_name)
  • 升级版
def DownloadFile2(mp3_url, save_url,file_name):
try:
if mp3_url is None or save_url is None or file_name is None:
print('参数错误')
return None
# 文件夹不存在,则创建文件夹
folder = os.path.exists(save_url)
if not folder:
os.makedirs(save_url)
# 读取MP3资源
res = requests.get(mp3_url,stream=True)
total_size = int(int(res.headers["Content-Length"])/1024+0.5)
# 获取文件地址
file_path = os.path.join(save_url, file_name) # 打开本地文件夹路径file_path,以二进制流方式写入,保存到本地
from tqdm import tqdm
with open(file_path, 'wb') as fd:
print('开始下载文件:{},当前文件大小:{}KB'.format(file_name,total_size))
for chunk in tqdm(iterable=res.iter_content(1024),total=total_size,unit='k',desc=None):
fd.write(chunk)
print(file_name+' 下载完成!')
except:
print("程序错误")
# MP3源地址url
mp3_url = 'http://mp.111ttt.cn/mp3free/81135985.mp3'
# MP3保存文件夹
save_url='./music/'
# MP3文件名
file_name = '少年-梦然.mp3'
DownloadFile2(mp3_url,save_url, file_name)

  • 装逼版
for file_name,mp3_url in zip(musicnamelst[:2],musicurllst[:2]):
DownloadFile2(mp3_url,save_url, file_name+'.mp3')

如果要全量下载,去掉索引

for file_name,mp3_url in zip(musicnamelst,musicurllst):
DownloadFile2(mp3_url,save_url, file_name+'.mp3')

太多了,部分截图

【python 】文件下载进度条(装逼利器)的更多相关文章

  1. Python展示文件下载进度条

    前言 大家在用Python写一些小程序的时候,经常都会用到文件下载,对于一些较小的文件,大家可能不太在乎文件的下载进度,因为一会就下载完毕了. 但是当文件较大,比如下载chromedriver的时候, ...

  2. Python字符进度条

    Python字符进度条 看看这个神奇的module from tqdm import trange from time import sleep for r in trange(10, 1, -1): ...

  3. Python之进度条及π的计算

    Python之进度条及π的计算 文本进度条 1.  简单的开始 这是利用print()函数来实现简单的非刷新文本进度条.它的基本思想是按照任务执行百分比将整个任务划分为100个单位,每执行N%输出一次 ...

  4. Python实现进度条功能

    Python实现进度条功能 import sys, time def progress(percent, width=50): # 设置进度条的宽度 if percent >= 100: # 当 ...

  5. Python实现进度条和时间预估的示例代码

    一.前言 很多人学习python,不知道从何学起.很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手.很多已经做案例的人,却不知道如何去学习更加高深的知识.那么针对这三类人,我给大家 ...

  6. python print 进度条的例子

    def progress(width, percent): print "%s %d%%\r" % (('%%-%ds' % width) % (width * percent / ...

  7. python实现进度条

    先说一下文本系统的控制符: \r: 将光标移动到当前行的首位而不换行: \n: 将光标移动到下一行,并不移动到首位: \r\n: 将光标移动到下一行首位. 环境: root@ubuntu16:/ale ...

  8. python实现进度条和百分比同时显示

    python中同时打印进度条和百分比 仅打印进度条: import sys,time for i in range(100): sys.stdout.write('>') sys.stdout. ...

  9. H5+Ajax+WebApi实现文件下载(进度条,多文件)

    前言 踩过的坑 1.WebAPI跨域 2.Jquery ajax低版本不支持XHR 2功能 3.Jquery ajax不支持Deferred的process事件 4.IE下文件名乱码问题 功能实现 & ...

随机推荐

  1. 谷歌提高Google Assistant中Voice Match的准确性

    谷歌正在提高 Google Assistant 中 Voice Match 的准确性,使其变得更加完善.谷歌表示一旦用户在 Google Assistant 中启用 Voice Match 功能,那么 ...

  2. 从「Hello World」说起

    标签: node模块 从一个简单「hello world」程序对 node.js 有个感性的认识. const http = requier ('http'); const pathname = '1 ...

  3. resetlogs 打开数据库时新生成日志位置问题

    若系统中缺少联机日志,以resetlogs方式重建控制文件,那么当我们以alter database open resetlogs方式打开数据库时,新生成的联机日志会位于何处? 一:下面分别讨论几种情 ...

  4. P5960 差分约束算法模板

    差分约束 差分约束,一般用来解决有\(n\)个未知数,\(m\)个不等式方程的问题,形如: \[\begin{cases} \ x_{a_1}-x_{b_1}\leq y_1\\ \ x_{a_2}- ...

  5. 聊聊select, poll 和 epoll_wait

    聊聊select, poll 和 epoll 假设项目上需要实现一个TCP的客户端和服务器从而进行跨机器的数据收发,我们很可能翻阅一些资料,然后写出如下的代码. 服务端 客户端 那么问题来了,如果有一 ...

  6. Git上传本地仓库项目到gitee远程仓库(命令篇)

    前言:最近整理了一下自己之前的自学代码,包括一些练习的项目.发现有些杂乱,故想使用Gitte(码云)管理.加上不少公司使用Git,所以写了这篇文章记录. 如果我们本地有了项目,那么如何上传到码云上呢? ...

  7. Java——Lambda表达式

    一.Lambda表达式入门 我们先来看一段代码:匿名内部类的方式实现参数的传递 interface Command{ public abstract void test(); } public cla ...

  8. Spring官网阅读(四)BeanDefinition(上)

    前面几篇文章已经学习了官网中的1.2,1.3,1.4三小结,主要是容器,Bean的实例化及Bean之间的依赖关系等.这篇文章,我们继续官网的学习,主要是BeanDefinition的相关知识,这是Sp ...

  9. 201771010113 李婷华 《面向对象程序设计(Java)》第六周总结

    一.理论知识部分 第四章 类与对象 1.方法的定义:方法声明和方法体. 2.重载:一个类中可以有多个方法具有相同的名字,不同的类型,不同的参数. 3.构造器:也叫构造方法,是类中的一种特殊的方法,其作 ...

  10. 一、Spring的控制反转(IOC)学习

    一.控制反转 1.什么是控制反转? 控制反转(Inversion of Control,缩写为IoC),是面向对象中的一种设计原则,可以用来减低计算机代码之间的耦合度.其中最常见的方式叫做依赖注入(D ...