国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

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

服務器之家 - 腳本之家 - Python - Python 工具類實現(xiàn)大文件斷點續(xù)傳功能詳解

Python 工具類實現(xiàn)大文件斷點續(xù)傳功能詳解

2022-02-20 00:08劍客阿良_ALiang Python

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

依賴

os、sys、requests

 

工具代碼

廢話不多說,上代碼。

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Sat Oct 23 13:54:39 2021
@author: huyi
"""

import os
import sys

import requests



def download(url, file_path):
  # 重試計數(shù)
  count = 0
  # 第一次請求是為了得到文件總大小
  r1 = requests.get(url, stream=True, verify=False)
  total_size = int(r1.headers['Content-Length'])

  # 判斷本地文件是否存在,存在則讀取文件數(shù)據(jù)大小
  if os.path.exists(file_path):
      temp_size = os.path.getsize(file_path)  # 本地已經下載的文件大小
  else:
      temp_size = 0
      
  # 對比一下,是不是還沒下完
  print(temp_size)
  print(total_size)
  
  # 開始下載
  while count < 10:
      if count != 0:
          temp_size = os.path.getsize(file_path)
      # 文件大小一致,跳出循環(huán)
      if temp_size >= total_size:
          break
      count += 1
      print(
          "第[{}]次下載文件,已經下載數(shù)據(jù)大小:[{}],應下載數(shù)據(jù)大小:[{}]".format(
              count, temp_size, total_size))
      # 重新請求網址,加入新的請求頭的
      # 核心部分,這個是請求下載時,從本地文件已經下載過的后面下載
      headers = {"Range": f"bytes={temp_size}-{total_size}"}
      # r = requests.get(url, stream=True, verify=False)
      r = requests.get(url, stream=True, verify=False, headers=headers)

      # "ab"表示追加形式寫入文件
      with open(file_path, "ab") as f:
          if count != 1:
              f.seek(temp_size)
          for chunk in r.iter_content(chunk_size=1024 * 64):
              if chunk:
                  temp_size += len(chunk)
                  f.write(chunk)
                  f.flush()
                  ###這是下載實現(xiàn)進度顯示####
                  done = int(50 * temp_size / total_size)
                  sys.stdout.write("\r[%s%s] %d%%" % (
                      '' * done, ' ' * (50 - done), 100 * temp_size / total_size))
                  sys.stdout.flush()
      print("\n")

  return file_path

代碼說明:

1、重試次數(shù)可以自己修改,按照需求來,我這邊是10次。

2、增加了進度條的打印,別問,好看就完了。

驗證一下,我們準備個文件下載服務。上文件服務代碼。代碼對flask、gevent有依賴。

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Sat Oct 23 19:53:18 2021
@author: huyi
"""

from flask import Flask, request, make_response, send_from_directory
from gevent.pywsgi import WSGIServer
from gevent import monkey

# 將python標準的io方法,都替換成gevent中的同名方法,遇到io阻塞gevent自動進行協(xié)程切換
monkey.patch_all()
app = Flask(__name__)

@app.route("/download", methods=['GET'])
def download_file():
  get_data = request.args.to_dict()
  file_path = get_data.get('fileName')

  response = make_response(
      send_from_directory('/Users/huyi/Movies/Videos',file_path,as_attachment=True))
  response.headers["Content-Disposition"] = "attachment; filename={}".format(
      file_path.encode().decode('latin-1'))
  return response

if __name__ == '__main__':
  WSGIServer(('0.0.0.0', 8080), app).serve_forever()

啟動文件下載服務,測試下載代碼

download('http://localhost:8080/download?fileName=test.mp4', '/Users/huyi/Downloads/test.mp4')

首先我們下載一部分,然后關閉,模擬下載一半的情況。

Python 工具類實現(xiàn)大文件斷點續(xù)傳功能詳解

重新執(zhí)行一下,把剩下的執(zhí)行

Python 工具類實現(xiàn)大文件斷點續(xù)傳功能詳解

OK,驗證通過。

 

總結

斷點續(xù)傳的這部分代碼,你可以好好理解一下原理,其實不復雜。還是不明白可以私信我。

如果本文對你有幫助,請點個贊支持一下吧。

Python 工具類實現(xiàn)大文件斷點續(xù)傳功能詳解

到此這篇關于Python 工具類實現(xiàn)大文件斷點續(xù)傳功能詳解的文章就介紹到這了,更多相關Python 文件下載內容請搜索服務器之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://huyi-aliang.blog.csdn.net/article/details/120926552

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 牛牛澡牛牛爽一区二区 | 久久人人爽人人爽人人片av不 | 黄网页在线观看 | 在线日韩视频 | 韩日精品一区 | 最近日本韩国高清免费观看 | 亚洲成av人片一区二区梦乃 | 在线亚洲一区 | 国产高潮失禁喷水爽网站 | 免费成人在线视频网站 | 希岛爱理一区二区三区av高清 | 国产毛片av| 成人久久久 | 欧美精品在线一区二区 | 天天操天天碰 | 美女视频一区二区三区 | 中文字幕国产日韩 | 91亚洲国产成人久久精品网站 | 日韩性视频 | 免费午夜电影 | a级在线观看 | 国产免费av在线 | 欧美大片免费观看 | 国产区免费在线观看 | 中文字幕日韩欧美 | 99热最新| 国产精品三级久久久久久电影 | 国产精品原创巨作av | 日日爽夜夜操 | 日韩精品一区二区三区四区五区 | 国产精品69毛片高清亚洲 | 久久精品国产一区二区电影 | 欧美日韩第一页 | www久久九| 色欧美片视频在线观看 | 久草电影在线 | 精品日韩一区二区 | 欧美一区不卡 | 国产精品毛片一区二区三区 | 色在线免费 | 一级a毛片|