ZIP-Datei im Arbeitsspeicher herunterladen & lesen mit Python

English Deutsch

Problem:

Du möchtest eine ZIP-Datei durch Herunterladen von einer URL in Python abrufen, aber du möchtest sie nicht in einer temporären Datei speichern und später extrahieren, sondern stattdessen ihren Inhalt direkt im Arbeitsspeicher extrahieren.

Lösung

In Python3 kannst du io.BytesIO zusammen mit zipfile (beide sind in der Standardbibliothek vorhanden) verwenden, um sie im Arbeitsspeicher zu lesen. Die folgende Beispielfunktion bietet einen einsatzbereiten Generator-Ansatz zum Iterieren über die Dateien in der ZIP:

download_extract_zip.py
import requests
import io
import zipfile

def download_extract_zip(url):
    """
    Lädt eine ZIP-Datei herunter und extrahiert ihren Inhalt im Arbeitsspeicher.
    yielded (Dateiname, file-ähnliches Objekt)-Paare
    """
    response = requests.get(url)
    with zipfile.ZipFile(io.BytesIO(response.content)) as thezip:
        for zipinfo in thezip.infolist():
            with thezip.open(zipinfo) as thefile:
                yield zipinfo.filename, thefile

Check out similar posts by category: Allgemein