Python: Wie lade ich eine Datei mit einem Bereich von Bytes herunter?

Ich möchte eine Datei im Multithread-Modus herunterladen und habe hier folgenden Code:

#!/usr/bin/env python

import httplib


def main():
    url_opt = '/film/0d46e21795209bc18e9530133226cfc3/7f_Naruto.Uragannie.Hroniki.001.seriya.a1.20.06.13.mp4'

    headers = {}
    headers['Accept-Language'] = 'en-GB,en-US,en'
    headers['Accept-Encoding'] = 'gzip,deflate,sdch'
    headers['Accept-Charset'] = 'max-age=0'
    headers['Cache-Control'] = 'ISO-8859-1,utf-8,*'
    headers['Cache-Control'] = 'max-age=0'
    headers['User-Agent'] = 'Mozilla/5.0 (Windows NT 5.1)'
    headers['Connection'] = 'keep-alive'
    headers['Accept'] = 'text/html,application/xhtml+xml,application/xml,*/*'
    headers['Range'] = ''

    conn = httplib.HTTPConnection('data09-cdn.datalock.ru:80')
    conn.request("GET", url_opt, '', headers)

    print "Request sent"

    resp = conn.getresponse()
    print resp.status
    print resp.reason
    print resp.getheaders()

    file_for_wirte = open('cartoon.mp4', 'w')
    file_for_wirte.write(resp.read())

    print resp.read()

    conn.close()


if __name__ == "__main__":
    main()

Hier wird ausgegeben:

Request sent
200
OK
[('content-length', '62515220'), ('accept-ranges', 'bytes'), ('server', 'nginx/1.2.7'), ('last-modified', 'Thu, 20 Jun 2013 12:10:43 GMT'), ('connection', 'keep-alive'), ('date', 'Fri, 14 Feb 2014 07:53:30 GMT'), ('content-type', 'video/mp4')]

Dieser Code funktioniert perfekt, aber ich verstehe durch die Dokumentation nicht, wie man Dateien mit Hilfe von Bereichen herunterlädt. Wenn Sie eine Antwort erhalten, welcher Server bietet:

 ('content-length', '62515220'), ('accept-ranges', 'bytes')

Er unterstützt den Bereich in Byte, wobei die Inhaltsgröße 62515220 beträgt

In dieser Anfrage wurde jedoch die gesamte Datei heruntergeladen. Was ich aber tun möchte, um zuerst Serverinformationen zu erhalten, wie kann diese Datei mit http-Bereichsabfragen und der Inhaltsgröße der Datei ohne Download unterstützt werden? Und wie kann ich eine http-Abfrage mit Bereich erstellen (d. H .: 0 ~ 25000)?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage