Hi
ich hoffe es ist nur eine einfache Frage, doch stelle ich mich im Moment sehr doof an.
Ein Zip-Archiv öffne ich mit zipfile und eine Datei aus dem Netz mit urllib, aber wie öffne ich ein Zip-Archiv aus dem Netz???
zip-Archiv aus dem Netz
- cofi
- Python-Forum Veteran
- Beiträge: 4432
- Registriert: Sonntag 30. März 2008, 04:16
- Wohnort: RGFybXN0YWR0
Indem du sie runterlaedst und dann oeffnest.
Entweder du speicherst das Archiv als temporaere Datei oder du benutzt StringIO.
Entweder du speicherst das Archiv als temporaere Datei oder du benutzt StringIO.
Michael Markert ❖ PEP 8 Übersetzung ❖ Tutorial Übersetzung (3.x) ⇒ Online-Version (Python 3.3) ❖ Deutscher Python-Insider ❖ Projekte
- cofi
- Python-Forum Veteran
- Beiträge: 4432
- Registriert: Sonntag 30. März 2008, 04:16
- Wohnort: RGFybXN0YWR0
Klar:
Aber bitte nicht nutzen.
Code: Alles auswählen
zip = zipfile.ZipFile(StringIO.StringIO(urllib2.urlopen(url).read()))
Michael Markert ❖ PEP 8 Übersetzung ❖ Tutorial Übersetzung (3.x) ⇒ Online-Version (Python 3.3) ❖ Deutscher Python-Insider ❖ Projekte
- cofi
- Python-Forum Veteran
- Beiträge: 4432
- Registriert: Sonntag 30. März 2008, 04:16
- Wohnort: RGFybXN0YWR0
Ich weiss gar nicht, wo ich anfangen soll ...
Bitte verwenden:
@Leonidas: Ja, ich haette es besser wissen sollen ...
Bitte verwenden:
Code: Alles auswählen
with urllib2.urlopen(url) as remote:
with zipfile.ZipFile(StringIO.StringIO(remote.read())) as zip:
doWork()
Michael Markert ❖ PEP 8 Übersetzung ❖ Tutorial Übersetzung (3.x) ⇒ Online-Version (Python 3.3) ❖ Deutscher Python-Insider ❖ Projekte
keine Sorge, ich hab es nicht 100%ig übernommen bzw. an meine Bedürfnisse angepasst.
Exception-Handling ist auch mit dabei.
Mir ging es eher um den Ansatz.
Da ich, wie vielleicht schon zu ersehen war ein etwas unerfahrener Noob bin.
Exception-Handling ist auch mit dabei.
Mir ging es eher um den Ansatz.
Da ich, wie vielleicht schon zu ersehen war ein etwas unerfahrener Noob bin.
- cofi
- Python-Forum Veteran
- Beiträge: 4432
- Registriert: Sonntag 30. März 2008, 04:16
- Wohnort: RGFybXN0YWR0
Oh das koennte sein.
Aber dafuer gibt es `contextlib.closing`:
Aber dafuer gibt es `contextlib.closing`:
Code: Alles auswählen
import contextlib
with contextlib.closing(urllib2.urlopen(url)) as remote:
Michael Markert ❖ PEP 8 Übersetzung ❖ Tutorial Übersetzung (3.x) ⇒ Online-Version (Python 3.3) ❖ Deutscher Python-Insider ❖ Projekte
Eine ZIP-Datei kann leider nicht einfach aus einem Stream gelesen werden, da die Informationen, wie die Datei aufgebaut ist, am Ende der Datei stehen. Daher braucht man wahlfreien Zugriff. Ein besseres Format für einen stromartigen Zugriff (direkt über den "Input-Kanal") wäre tar (mit gzip oder bzip2 komprimiert).smith0815 hat geschrieben:ich hoffte, ich könnte den "Input-Kanal" irgendwie direkt übergeben.
Stefan