一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語(yǔ)言編程技術(shù)及教程分享平臺(tái)!
分類(lèi)導(dǎo)航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務(wù)器之家 - 腳本之家 - Python - python 文件下載之?dāng)帱c(diǎn)續(xù)傳的實(shí)現(xiàn)

python 文件下載之?dāng)帱c(diǎn)續(xù)傳的實(shí)現(xiàn)

2022-02-25 13:23不俠居 Python

用python進(jìn)行文件下載的時(shí)候,一旦出現(xiàn)網(wǎng)絡(luò)波動(dòng)問(wèn)題,導(dǎo)致文件下載到一半。如果將下載不完全的文件刪掉,那么又需要從頭開(kāi)始,如果連續(xù)網(wǎng)絡(luò)波動(dòng),是不是要頭禿了。本文提供斷點(diǎn)續(xù)傳下載工具方法,希望可以幫助到你

1.前序

當(dāng)下載突然斷開(kāi)后,斷點(diǎn)續(xù)傳就需要了,繼續(xù)前面下載的內(nèi)容下載。解決了不需要重復(fù)下載

 

2.技術(shù)原理

HTTP/1.1 開(kāi)始支持?jǐn)帱c(diǎn)續(xù)傳,一般斷點(diǎn)下載會(huì)用到 Range 和 Content-Range 實(shí)體頭
Range是請(qǐng)求頭,Content-Range是響應(yīng)頭

2.1 Content-Range

用于響應(yīng)頭中

語(yǔ)法:

Content-Length: <length>

2.2 Range

RangeHTTP 請(qǐng)求頭表示服務(wù)器應(yīng)返回的文檔部分。可以同時(shí)用一個(gè)頭請(qǐng)求多個(gè)部件,服務(wù)器可以在多部分文檔中發(fā)回這些范圍。如果服務(wù)器發(fā)回范圍,則使用 206 部分內(nèi)容進(jìn)行響應(yīng)。如果范圍無(wú)效,服務(wù)器會(huì)返回 416 范圍不可滿(mǎn)足的錯(cuò)誤。服務(wù)器還可以忽略標(biāo)題,然后返回整個(gè)文檔,并返回 200 狀態(tài)代碼。

語(yǔ)法:

Range: <unit>=<range-start>-
Range: <unit>=<range-start>-<range-end>
Range: <unit>=<range-start>-<range-end>, <range-start>-<range-end>
Range: <unit>=<range-start>-<range-end>, <range-start>-<range-end>, <range-start>-<range-end>
Range: <unit>=-<suffix-length>

unit:指定范圍的單位,通常是bytes。
range-start:指示請(qǐng)求范圍開(kāi)始的給定單元中的整數(shù)。
range-end:給定單元中的整數(shù),指示所請(qǐng)求范圍的末尾。此值是可選的,如果省略,文檔的末尾將被視為范圍的末尾。
suffix-length:給定單位中的整數(shù),指示要返回的文件末尾的單位數(shù)。

例子:
(1)從文件中請(qǐng)求三個(gè)范圍。第一個(gè)范圍為第200字節(jié)到第1000個(gè)字節(jié)的位置;第二個(gè)范圍為第2000個(gè)字節(jié)位置到第6576個(gè)字節(jié)的位置;第三個(gè)范圍為第19000字節(jié)位置之后的全部

Range: bytes=200-1000, 2000-6576, 19000-

(2)請(qǐng)求文件的前 500 和最后 500 字節(jié)。如果范圍重疊,服務(wù)器可能會(huì)拒絕該請(qǐng)求。

Range: bytes=0-499, -500

 

3. 代碼實(shí)現(xiàn)

import requests
import os
headers = {
  'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.182 Safari/537.36'
}
file_path = './video/1.mp4' # 存儲(chǔ)地址
url = 'https://v3-dy-o.zjcdn.com/410b9087e76fe2360e320463f8586ed8/6185ea7a/video/tos/cn/tos-cn-ve-15-alinc2/62427caf076b4d7d9dbbdbea98f97c9f/?a=6383&br=2690&bt=2690&cd=0%7C0%7C0&ch=26&cr=0&cs=0&cv=1&dr=0&ds=3&er=&ft=jal9w1-eTz7ThWR7Wlct&l=021636162458101fdbd400a040000000a70125e00000141b4be97&lr=all&mime_type=video_mp4&net=0&pl=0&qs=0&rc=M3U8bDw6ZmZsODMzNGkzM0ApPDY3Ozs7Mzw7NzY6N2g0aWdqNGVfcjRnZG5gLS1kLTBzczU2MV40Ly40NmAtLV8xLWI6Yw%3D%3D&vl=&vr='
r = requests.get(url,headers=header)
total_size = int(r.headers['Content-Length']) # 查看文件大小,并轉(zhuǎn)換為整數(shù)類(lèi)型
print(r.headers)
# 查看本地下載了多少
if os.path.exists(file_path):
  temp_size = os.path.getsize(file_path)  # 本地已經(jīng)下載的文件大小
else:
  temp_size = 0

print('已下載:' + temp_size) 
print('總共需要下載:' + total_size)
header['Range'] = 'bytes={}-'.format(temp_size) # 向頭加入Range信息
print(header) # 打印頭信息
r = requests.get(url, headers=header, stream=True)
with open(file_path, "ab") as f:
      for chunk in r.iter_content(chunk_size=1024):
          if chunk:
              temp_size += len(chunk)
              f.write(chunk)
              

現(xiàn)在不知到怎么做突然下載被停止后,數(shù)據(jù)能寫(xiě)入文件了,所以現(xiàn)在是手動(dòng)模擬下載斷開(kāi)。

在寫(xiě)入文件中加入了一個(gè)判斷,當(dāng)文件下載了5M時(shí)停止下載,之后再刪掉這段代碼,在重新下載。

with open(file_path, "ab") as f:
      for chunk in r.iter_content(chunk_size=1024):
          if chunk:
              temp_size += len(chunk)
              f.write(chunk)
              if temp_size > 1024 *1024 * 5:
                  break

第一次下載

python 文件下載之?dāng)帱c(diǎn)續(xù)傳的實(shí)現(xiàn)


第二次下載

python 文件下載之?dāng)帱c(diǎn)續(xù)傳的實(shí)現(xiàn)

到此這篇關(guān)于python 文件下載之?dāng)帱c(diǎn)續(xù)傳的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)python 斷點(diǎn)續(xù)傳內(nèi)容請(qǐng)搜索服務(wù)器之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持服務(wù)器之家!

原文鏈接:https://blog.csdn.net/m0_46778548/article/details/121174049

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 好紧好爽再叫浪一点点潘金莲 | 色哺乳妇hd| 99国产情在线视频 | 丝袜性爱 | 青青成人福利国产在线视频 | 国内精品91东航翘臀女神在线 | 千金肉奴隶在线观看 | 色交视频| ipx-177绝对领域在线观看 | 小辣椒精品福利视频导航 | 2019年国产高清情侣视频 | 风间由美被义子中文字幕 | 国产欧美日韩亚洲精品区2345 | 欧美亚洲另类综合 | 亚洲狠狠婷婷综合久久蜜桃 | bbwfreehd女厕所ved| 青青五月天 | 精品在线免费播放 | 国产青色 | 美女扒开粉嫩尿口漫画 | 国产成人影院一区二区 | 新新电影理论中文字幕 | 无码天堂亚洲国产AV久久 | 亚洲国产区男人本色在线观看欧美 | 99视频九九精品视频在线观看 | 牛人国产偷窥女洗浴在线观看 | 蛮荒的童话未删减在线观看 | 国产免费又粗又猛又爽视频国产 | www视频在线免费观看 | 免费观看韩剧网站在线观看 | 操小女人 | 亚洲黄色成人 | 玩乳h文奶水和尚 | 冰雪奇缘1完整版免费观看 变形金刚第一部 | 动漫美女3d被爆漫画 | 91高清国产经典在线观看 | 日韩 国产 欧美 | 操破苍穹在线 | 激情另类国内一区二区视频 | 午夜影院c绿象 | 99在线视频观看 |