Python: das Herunterladen einer großen Datei auf einen lokalen Pfad und das festlegen von benutzerdefinierten http-Header

Ich bin auf der Suche nach download einer Datei von einem http-url zu einer lokalen Datei. Die Datei ist groß genug, dass ich möchte, um es herunterzuladen, und speichern Sie es Brocken eher als read() und write() die gesamte Datei als einen einzigen Riesen-string.

Die Schnittstelle urllib.urlretrieve ist im wesentlichen, was ich will. Aber, ich kann nicht sehen, ein Weg, um set-request-Header beim Download über urllib.urlretrieve, das ist etwas, was ich tun muss.

Wenn ich urllib2, ich kann request-Header über seine Request Objekt. Allerdings sehe ich nicht ein, eine API in urllib2 zum herunterladen einer Datei direkt auf einem Pfad auf der Festplatte wie urlretrieve. Es scheint, dass stattdessen werde ich haben, um eine Schleife zur Iteration über die zurückgegebenen Daten in Blöcken, schreiben Sie in einer Datei selbst und überprüfen, wenn wir fertig sind.

Was wäre der beste Weg, um erstellen Sie eine Funktion, die funktioniert wie urllib.urlretrieve aber ermöglicht request-Header übergeben werden?

  • Was ist falsch mit looping über Stücke von Daten zurückgegeben, aus Neugier?
  • Wie kann ich wissen, Wann zu beenden? read() gibt den leeren string nicht unbedingt das Ende bedeuten (wie es auch bei Dateien), weil die Daten vielleicht noch rieseln in. Ich kann verlassen sich auf die content-length-header, aber es fühlt sich an wie ein Mechanismus, dies zu tun, sollten Sie bereits irgendwo existieren.
InformationsquelleAutor | 2009-04-08
Schreibe einen Kommentar