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, thefileCheck out similar posts by category:
Allgemein
If this post helped you, please consider buying me a coffee or donating via PayPal to support research & publishing of new posts on TechOverflow