# -*- coding: utf-8 -*-
"""
Created on Wed Aug 22 15:56:19 2018 @author: Administrator
""" # 在python3下测试
import requests
import threading
import datetime count =0;
def Handler(start, end, url, filename): #headers = {'Range': 'bytes=%d-%d' % (start, end-1)}
#r = requests.get(url, headers=headers, stream=True)
for i in filename[start:end]:
global count
r = requests.get("https://youku.cdn2-youku.com/20180701/12972_72ec5f94/1000k/hls/"+i.replace("\n",""),stream=True)
#r = requests.get(url)
with open("ts/"+i.replace("\n",""), "wb") as code:
code.write(r.content)
count =count+1
print("下载进度:%.2f" % (count/len(filename))) def download_file(url, num_thread = 100):
f = open('index.m3u8', 'r', encoding='utf-8')
text_list = f.readlines()
s_list = []
for i in text_list:
if i.find('#EX')==-1:
s_list.append(i) f.close()
file_size = len(s_list) # 启动多线程写文件
part = file_size // num_thread # 如果不能整除,最后一块应该多几个字节
for i in range(num_thread):
start = part * i
if i == num_thread - 1: # 最后一块
end = file_size
else:
end = start + part t = threading.Thread(target=Handler, kwargs={'start': start, 'end': end, 'url': url, 'filename': s_list})
t.setDaemon(True)
t.start() # 等待所有线程下载完成
main_thread = threading.current_thread()
for t in threading.enumerate():
if t is main_thread:
continue
t.join()
#print('%s 下载完成' % file_name) if __name__ == '__main__':
url ="https://youku.cdn2-youku.com/20180701/12972_72ec5f94/1000k/hls/";
start = datetime.datetime.now().replace(microsecond=0)
download_file(url)
end = datetime.datetime.now().replace(microsecond=0)
print("用时: ", end='')
print(end-start)

python多线程下载ts文件的更多相关文章

  1. JAVA多线程下载网络文件

    JAVA多线程下载网络文件,开启多个线程,同时下载网络文件.   源码如下:(点击下载 MultiThreadDownload.java) import java.io.InputStream; im ...

  2. Python3 根据m3u8下载视频,批量下载ts文件并且合并

    Python3 根据m3u8下载视频,批量下载ts文件并且合并 m3u8是苹果公司推出一种视频播放标准,是一种文件检索格式,将视频切割成一小段一小段的ts格式的视频文件,然后存在服务器中(现在为了减少 ...

  3. Android 开发工具类 27_多线程下载大文件

    多线程下载大文件时序图 FileDownloader.java package com.wangjialin.internet.service.downloader; import java.io.F ...

  4. C#多线程下载一个文件

    这里只是说明多线程下载的理论基础,嘿嘿,并没有写多线程下载的代码,标题党了,但是我相信,看完这个代码就应该能够多线程的方式去下载一个文件了. 多线程下载是需要服务器支持的,这里并没有判断服务器不支持的 ...

  5. Android多线程下载大文件解析

    1.多线程介绍 用过迅雷的同学都知道.迅雷有个功能叫做多线程.另一个叫离线下载,我们这里重点介绍一下多线程下载.多线程,顾名思义就是非常多歌线程同一时候在执行,为什么要提出多线程这个概念呢?由于有时候 ...

  6. 【python】下载网络文件到本地

    # 下载网络图片文件到本地 import urllib.request rsp=urllib.request.urlopen("http://n.sinaimg.cn/ent/transfo ...

  7. python合并大量ts文件成mp4格式(ps:上限是450,亲测)

    import os #exec_str = r'copy /b ts/c9645620628078.ts+ts/c9645620628079.ts ts/1.ts' #os.system(exec_s ...

  8. python多线程下载文件

    从文件中读取图片url和名称,将url中的文件下载下来.文件中每一行包含一个url和文件名,用制表符隔开. 1.使用requests请求url并下载文件 def download(img_url, i ...

  9. python 多线程拷贝单个文件

    # -*- coding: utf-8 -*- # @author: Tele # @Time : 2019/04/04 下午 12:25 # 多线程方式拷贝单个文件 import threading ...

随机推荐

  1. Java - 判断字符串是否是回文

    首先,回文是指类似于“12345”,“abcdcba”的形式,即正念和反念都是一样的字符串 判断字符串是否是回文,这边介绍3种办法 将字符串翻转,判断翻转后的字符串和原字符串是否相等 public s ...

  2. 1.3 使用jmeter进行http接口测试

    来源: http://www.cnblogs.com/alisapan/p/6150309.html 此篇纯是搬运记载..   一.测试需求描述 1. 本次测试的接口为http服务端接口 2. 接口的 ...

  3. 概率dp poj 2151

    题意: 这道题目的意思很简单,有t个ACM队,m个题目,题目给出了每个队对每个题目做出的概率大小(0到1之间,包含0和1),要求每个队至少做出一道题(签到题),同时,要求获胜队必须至少能够做出n道题( ...

  4. fiddler抓包手机准备工作

    1.勾选connections中的:Allow remote computers to connect 2.cmd中查找IP 3.在手机连接的WiFi中设置手动代理为:IP port:8888 4.在 ...

  5. 【 SSH 实例】使用ssh开发的简单项目

    简单的员工管理项目,使用spring.struts1.hibernate开发 applicationContext.xml <?xml version="1.0" encod ...

  6. 设置idea的快捷键组合 设置为默认

    ubuntu中,idea的快捷键组合 为 “Default for GNOME”,和windows中不一样了,需要修改为“Default”:

  7. Django - 美化显示request.META

    def index(request): values = request.META.items() html = [] for k, v in values: html.append('<tr& ...

  8. vue使用过程中遇到的细节问题

    1. 在methods 中添加一个方法.如果这个方法使用箭头函数的话,箭头函数中的this不是当前的vue实例,所以通过this.xxx是获取不到实例上面的属性的,这时我们可以用函数的简写来获取到实例 ...

  9. 什么是buffer?

    Buffer 类的实例类似于整数数组,但 Buffer 的大小是固定的.且在 V8 堆外分配物理内存. Buffer 的大小在被创建时确定,且无法调整. Buffer 类在 Node.js 中是一个全 ...

  10. Bug搬运工-CSCvn51483:AP datasheet should contain info if the AP contains or not temperature sensor

    目前在老一些的思科AP上,应该都没有温度传感器的功能(例如AP1600,wave 1 AP1700...),但是在思科官方没有明确的文档去说明这个问题. 在Outdoor AP(室外AP,例如AP15 ...