Ich lade eine komprimierte Datei aus dem Internet herunter:
%Vor%Nachdem ich einen großen Teil der Datei heruntergeladen und bearbeitet habe, bekomme ich schließlich den Fehler:
Datei "/usr/lib/python3.4/lzma.py", Zeile 225, in _fill_buffer raise EOFError ("Komprimierte Datei endete vor dem" EOFError: Komprimierte Datei beendet, bevor der End-of-Stream-Marker erreicht wurde
Ich denke, es könnte durch eine Internetverbindung verursacht werden, die abfällt oder der Server für einige Zeit nicht reagiert. Wenn das der Fall ist, gibt es es trotzdem, um es weiter versuchen zu lassen, bis die Verbindung wieder hergestellt ist, anstatt eine Ausnahme auszulösen. Ich glaube nicht, dass es ein Problem mit der Datei ist, da ich manuell viele Dateien von der gleichen Website manuell heruntergeladen und dekomprimiert habe. Ich war auch in der Lage, einige kleinere Dateien mit Python herunterzuladen und zu dekomprimieren. Die Datei, die ich herunterladen möchte, hat eine komprimierte Größe von etwa 20 GB.
aus der Datei urllib.urlopen:
Eine Einschränkung: die read () Methode, wenn das Argument Größe weggelassen wird oder negativ, kann nicht bis zum Ende des Datenstroms gelesen werden; es gibt kein gute Möglichkeit, festzustellen, dass der gesamte Stream von einem Socket wurde lesen Sie im allgemeinen Fall.
Vielleicht löst die lzma.open wegen der oben genannten Größe große / Verbindungsfehler / Timeout.
Haben Sie versucht, die Anforderungsbibliothek zu verwenden? Ich glaube, es bietet eine Abstraktion über Urlib.
Die folgende Lösung sollte für Sie funktionieren, aber sie verwendet die Anforderungsbibliothek anstelle von urllib (fragt aber trotzdem & gt; urllib an!). Lassen Sie es mich wissen, wenn Sie es vorziehen, urllib weiter zu verwenden.
%Vor%Angenommen, Sie müssen eine große Datei herunterladen, ist es besser, den Modus "write and binary" zu verwenden, wenn Sie Inhalt in eine Datei in Python schreiben.
Sie können auch versuchen, das Python-Anfragen -Modul mehr zu verwenden als das urllib-Modul:
Siehe unten einen Arbeitscode:
%Vor%Könnten Sie diesen Teil des Codes testen und antworten, wenn er Ihr Problem nicht löst?
Mit freundlichen Grüßen
Tags und Links python stream exception compression urllib